web-dev-qa-db-ja.com

NASデバイスからWindows7でシンボリックリンクを作成する

現在、ファイルのバックアップにはCarboniteを使用しています。私はN.A.Sを持っていますCarboniteサブスクリプションを持つマシン上のローカルファイルに加えて、Carboniteにバックアップしてもらいたいファイルがたくさんあります。

このためのシンボリックリンクを作成しようとしましたが、正しく機能させることができませんでした。これは、N.A.Sのファイルをバックアップする場合でも機能しますか?カーボナイト経由?

私が使用しているコマンドは、mklink/d "C:\ Finance Drive" "Q:\ Public\Quick Books Data\FinanceDrive"です。

これが機能しない理由はありますか?

編集:セキュリティプロファイルにアクセスし、UsersグループにAdministratorsに加えてシンボリックリンクを作成する権限があることを指定しました。

2
Blake

マップされたドライブ_\\servername\sharename\Public\Quick Books Data\Finance Drive_の代わりに_Q:_へのリンクを作成してみてください。私のWindows7 x64では、どちらの方法でも機能することがわかりました。

また、資格情報を必要としない古いスタイルのWindows共有でない限り、リモートサーバーとのセッションを確立していることを確認してください(_Net Use_で確認してください)。

さらに、ACLが正しく設定されていることを確認してくださいシンボリックリンク上それ自体と_icacls /L_。 _/L_なしで実行しても、期待した結果は得られません。これには、シンボリックリンクの作成と同じように管理者権限が必要です。


編集1:

この回答の以前のリビジョンで書いたものとは異なり、オブジェクトとI/Oマネージャーはマップされたネットワークドライブを理解できます( WinObj で_\Device\LanManRedirector_シンボリックリンクを探してください) = _\Sessions\0\DosDevices_の下のオブジェクトディレクトリの1つの下。ちょうどそれをテストしました。

また、ルシノビッチらによるWindows Internals、第5版でも調べました。 (924ページ以降)、あなたが私に興味を持ったので。システムでシンボリックリンクがどのように構成されているかを_fsutil behavior query SymLinkEvaluation_で確認することをお勧めします。デフォルトは次のようになります(Vista SP2でも):

_>fsutil behavior query SymLinkEvaluation
Local to local symbolic links are enabled.
Local to remote symbolic links are enabled.
Remote to local symbolic links are disabled.
Remote to remote symbolic links are disabled.
_

ACLが共有とシンボリックリンクに正しく設定されている限り、UNCパスまたはマップされたドライブ文字をシンボリックリンクするように機能することをテストしました。ただし、シンボリックリンクにACLを制限しすぎると、失敗する可能性があります。古いスタイルの共有について両方をテストしましたおよび資格情報が必要な共有(私の場合はドメイン上で、そのドメイン上ではありません)。

ACLを一覧表示するには、次を使用します。

_icacls <symlink-name> /L
_

ただし、Vista SP2 x64でもテストしたところ、発生している問題が発生していますifシンボリックリンクの評価ポリシーはと同じに設定されていますが、ドライブ文字を宛先パスとして使用しています私がテストしたWindows7 SP1x64の場合。


編集2:

WinDbgでは、何が起こっているのかを追跡していました。私は最初に、他のデバイスオブジェクトの中でmupを所有していることがわかっているLanManRedirectorドライバーを確認することにしました。私のカーネルデバッグ対象はVistaSP2で、exposed同じ動作です。

まず、_L:_を_\\server\share_にマッピングするネットワークドライブを作成し、次に2つのシンボリックリンクを作成しました:_C:\Users\user\drv-name_を指す_L:\\_と_C:\Users\user\unc-name_を指す_\\server\share_ 。

シンボリックリンクが再解析ポイントであることを知って、NTFSドライバー(_dt ntfs!* -v_)のすべての関数をリストし、ブレークポイントを設定するのに最も有望なものを選択することにしました。

_kd> bp Ntfs!NtfsGetReparsePoint
kd> bp Ntfs!NtfsReparsePointName
kd> bp Ntfs!NtfsInitializeReparseFile
kd> bp Ntfs!_imp_FsRtlValidateReparsePointBuffer
kd> bp Ntfs!NtfsReparsePointString
kd> bp Ntfs!NtfsCreateReparsePointInternal
kd> bp Ntfs!NtfsGetReparsePointValue
_

もちろん、ファイルシステムドライバが非常にデリケートなものであることを無視します。しつこいバグチェックでどのWindosが私に思い出させたか-_0x24_。

残念ながら、システムが再び起動した後、両方のシンボリックリンクはそのVistaSP2仮想マシンでも機能しました。これは、一貫した方法で問題を再現する方法がないことを意味します。それは、当分の間、これ以上深く掘ることができないことを意味します。

3
0xC0000022L