web-dev-qa-db-ja.com

「タイプが無効になっているため、シンボリックリンクをたどることができません。」を克服するにはどうすればよいですか。シンボリックリンクのターゲットを取得する際のエラー?

前の質問 に続いて、UNCパスを使用してVistaマシンからServer 2008にシンボリックリンクを作成しています。リンクをうまく作成できます。 Server 2008ボックスに移動し、Explorerのリンクをダブルクリックしてターゲットファイルを開くことができます。ただし、FileCreateWを使用して(Vistaボックスから)UNCパスリンクへのハンドルを取得することはできません。試してみると失敗し、GetLastError()はエラーコード1463(0x5B7)を返します。

タイプが無効になっているため、シンボリックリンクをたどることができません。

Server 2008でその「タイプ」を有効にする方法(エラーとはその意味を想定している場合)

51
David Arno

@ David Arnoの役立つ回答 に追加するには、W7に基づいて:


fsutil.exeは、単に実行するだけで、引数がどのようなものかを示すことができます:

fsutil behavior set /?

current configurationを報告するには、fsutil behavior query SymlinkEvaluationを実行します- @ Jake1164の答えを参照) 、特にグループポリシーが動作を制御する方法に関して。

シンボリックリンク解決動作は、 accesses 特定のリンクにアクセスするマシンではなく、それをホストします。

fsutil behavior set SymlinkEvaluation動作コード、つまりL2LL2RR2L、およびR2R-次を意味します:

  • Lは「ローカル」を表し、Rは「リモート」を表します(だれがサンクしたでしょうか?)
  • 最初のLまたはR- before 2-リンク自体の場所を指します(ターゲットではなく) リンクにアクセスするマシンに関連して
  • SECOND LまたはR- after the 2-リンクのターゲット相対の場所を参照しますLINK自体が配置されているマシンへ

したがって、たとえば、fsutil behavior set SymlinkEvaluation R2Lを実行すると、リンクにアクセスできます。

  • リモートマシンにある(R
  • 同じリモートマシン上のターゲットを指す(L

DavidがVistaで経験したこととは異なり、W7では、R2Rのみを有効にすることで(R2Lも有効にする必要がない)、別のリモートマシン上のリソースを指すリモートリンクを解決できました。

41
mklement0

答えが見つかりましたが、文書化が不十分であると説明するのは控えめです!

まず、 このTechEdの記事 は、ユーザーが「シンボリックリンクで利用可能な4つの評価のいずれかを有効または無効にできる」という事実を強調しています。これらの4つの「評価」には、リモートからローカルおよびローカルからリモートが含まれます。これを行う方法についての手がかりはありません。

しかし、さらに検索すると このfsutilヘルプページ が明らかになり、「シンボリックリンクで使用可能な4つの評価のいずれかを有効または無効にする」方法が実際に文書化されます。私が抱えていた問題を解決するには、次のコマンドを発行する必要があります vistaボックスに

fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1

ローカルマシンとリモートマシンの両方でシンボリックリンクが指している場所へのフルアクセスを許可するため。

60
David Arno

私は最近、レガシープログラムの1つが機能しなくなったときに、すべての企業のWindows 7ボックスでこれを見つけました。これらの設定を検索して見つけた後、コマンドラインとレジストリを使用して設定を試みましたが、安心しました。

昇格したプロンプトからコマンドを使用できることがわかりました。

fsutil behavior query SymlinkEvaluation

これにより、これらのリンクのステータスが返され、私の場合はグループポリシーによって制御されています! IT部門(f @ $#%$ rs)に感謝します!

enter image description here

11
Jake1164

これらの設定は、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystemのレジストリから直接操作することもできます:SymlinkLocalToLocalEvaluation、SymlinkLocalToRemoteEvaluationを参照してください、SymlinkRemoteToLocalEvaluation、SymlinkRemoteToRemoteEvaluation。

「fsutil behavior query SymlinkEvaluation」でメッセージ..を取得した場合グループポリシーによって現在制御されています "...、チェックHKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Filesystems\NTFSまたは単に「Symlink」のレジストリを検索します

7
Bulki S Maslom

情報をくれたデビッドに感謝します。この問題を解決するために必死になっていたので、シンボリックリンクはほとんど役に立たなくなりました。

Vistaのデフォルト設定はL2LとL2Rが有効ですが、R2RとR2Lは無効になっていることに注意してください。

最初にR2Rのみを有効にしようとしましたが、これでは十分ではありません。 R2Lも有効にする必要があります。

私のリストの次の質問:ディレクトリリンクのmklinkコマンドのその愚かな/ Dスイッチを取り除く方法。デフォルトのリンクタイプは、ターゲットのパス名タイプから自動的に推測されるはずです!

参考までに、SymlinkEvaluationの設定を制御するグループポリシーがある場合は、コマンドラインから自分で設定できます。これらは次回の再起動/ログイン時にGPによって上書きされますが、設定はユーザーセッション中に機能します。

したがって、回避策として、GPの指示以外の値に設定する必要がある場合は、ログオン時にスクリプトを実行して、GPの適用後にそれらを設定することもできます。

2
Ryan

これらの設定は、レジストリから直接操作することもできます(書き込むにはローカル管理者が必要です)。

レジストリキー:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

レジストリ値(名前/データのペア):

Name                             Type       Data  (1: Enabled; 0: Disabled)
-------------------------------------------------
SymlinkLocalToLocalEvaluation    REG_DWORD     1
SymlinkLocalToRemoteEvaluation   REG_DWORD     1
SymlinkRemoteToLocalEvaluation   REG_DWORD     1
SymlinkRemoteToRemoteEvaluation  REG_DWORD     1

公式ドキュメントを見つけるのは困難ですが、これはMicrosoftの公式ページのようです。 シンボリックリンクの評価を選択的に許可します

2
mwolfe02

リモートジャンクションポイントはデフォルトで機能します。ファイルについては、まだシンボリックリンクが必要です。

1
Ian Kelling