2

SUBST コマンドを使用して、特定のフォルダーにマップされたドライブを作成しました。コンソール アプリケーションではディレクトリにアクセスできますが、Windows サービス アプリケーションでは同じディレクトリにアクセスできません。つまり、次の行は false を返します

Directory.Exists(@"x:\directory")

ここで、x: は SUBST を使用して次のように定義されます。

SUBST x: c:\xdrive

Windows サービス アプリケーションで subst-mapped ディレクトリにアクセスするにはどうすればよいですか?

4

4 に答える 4

3

Subst は、レジストリ ハイブに存在します。これにアクセスするには、Windows サービスが実行されている必要があります。サービスの資格情報を変更します。

これが不可能な場合は、プログラムで場所へのリンクを作成できます。System.Process を呼び出してcmd.exe /c substコマンドを実行するなど。

于 2009-12-10T09:43:13.550 に答える
1

問題は、サブセットコマンドを使用して作成された仮想ドライブは、それを作成したユーザーにのみ表示されることです。サービスは別のユーザー権限を使用して実行されているため、サービスアプリケーションには表示されません。

于 2011-06-03T19:06:16.980 に答える
0

サービスがローカル システムとして実行されている場合は、次の手順に従います。

http://blogs.msdn.com/b/adioltean/archive/2004/11/29/271987.aspx

これにより、ローカル サービスとして実行されているコマンド プロンプトが表示され、subst コマンドを実行できます。

于 2010-10-14T22:50:30.390 に答える
0

ここで説明されているいくつかの方法がありますソース: https://en.wikipedia.org/wiki/SUBST#Registry_(DOS_Devices)

以下は私のために働いた。

  1. Powershell を管理者として実行する

  2. X: を C:\XDrive にマップするには、次のように入力します。

    New-ItemProperty  `
      -Path 'HKLM:\system\CurrentControlSet\Control\Session Manager\DOS Devices\' `
      -Name "X:" -Value "\\DosDevices\C:\XDrive\"
    
于 2021-06-27T22:30:10.830 に答える