web-dev-qa-db-ja.com

Windowsレジストリの「NoWorkingDirectory」文字列値の意味は何ですか?

空の「NoWorkingDirectory」文字列値は、ユーザー定義の右クリックメニュー項目が作成されるときにWindowsレジストリでよく使用されます。たとえば、Windowsエクスプローラーでフォルダーのバックラウンドを右クリックしたときにPowerShellを開くことができるようにするには(フォルダー自体を右クリックするのではなく、その場合は「NoWorkingDirectory」は使用されません)。

[HKEY_CLASSES_ROOT\Directory\Background\Shell\powershell]
@="Open PowerShell Here"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\Background\Shell\powershell\command]
@="C:\\\\Windows\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell.exe -NoExit -Command Set-Location -LiteralPath '%V'"

ただし、この値の実際の目的は明確ではありません。私が見つけたすべてのサンプルでは、​​常に空で使用されています。それは正確には何を意味しますか?

8
Joe Schmoe

WorkingDirectoryはSystem.Diagnostics.ProcessStartInfoのプロパティです。右クリックすると、新しいプロセスが開始されます。この設定により、現在のディレクトリが「作業ディレクトリ」になることなくプロセスを開始できます。次に、実行中のコマンドのデフォルトはSystem32になります。

したがって、スクリプトの実行中に場所を右クリックして環境パスの一部にしたくない場合は、「NoWorkingDirectory」を使用します。 「NoWorkingDirectory」が指定されていない限りスティッキーになる可能性のある類似の名前付きファイルが複数のパスの場所にある場合を除いて、90%の場合に役に立たない設定です。

詳細については、こちらをご覧ください。

http://msdn.Microsoft.com/en-us/library/system.diagnostics.processstartinfo.workingdirectory%28v=vs.110%29.aspx

9
Knuckle-Dragger

「NoWorkingDirectory」動詞プロパティは文書化されていないため、これは単なる推測です。

Cmd.exeは、現在のディレクトリとしてリモート共有(UNC)をサポートしていません。そのような作業ディレクトリでCmd.exeを起動すると、コンソールに警告メッセージが出力されます。

「ここでコマンドウィンドウを開く」登録を見ると、pushdコマンドでCmd.exeが起動し、pushdがUNCパスをサポートしていることがわかります。 NoWorkingDirectoryは、警告メッセージの表示を回避するためだけにあります。

PowerShellでは実際には必要ありません。

1
Anders