5

VS2010を使用して.NETC#で開発されたWindowsサービスがあります。呼び出していますが、ドライブ(マップされたネットワークドライブ)をDriveInfo.GetDrives()取得していません。Z:

グーグルを実行したところ、Windowsアカウントの権限を示す結果がいくつか見つかったため、LocalSystem、User、LocalService、NetworkServiceなどのすべてのアカウントタイプのサービスインストーラーを試しましたが、どれも機能せず、ドライブを取得できませんZ:

私は別のテストを行い、Windowsサービスを(コンソールアプリケーションとして)デバッグしましたZ:。その方法でドライブを取得できます。

私の問題の解決策はありますか?

4

2 に答える 2

6

ネットワークドライブがマップされているアカウント(たとえば、コンソールアプリケーションとして実行していたのと同じアカウント)を使用してWindowsサービスを実行する必要があります。ハンスがアドバイスしたように、マップされたドライブは実際のユーザーに関連付けられた概念であるため、Windowsサービスで使用しないでください。

ただし、マップされたドライブを引き続き使用したい場合は、この特定の状況に関連する落とし穴と回避策について、この関連する質問を参照してください。

サービスで使用されるネットワークドライブをマッピングする方法

于 2012-08-19T20:47:33.880 に答える
2

ドライブマッピングはLUIDに関連付けられており、同じユーザーの下に複数の認証IDを設定できます(サービス、通常の整合性レベル、高整合性レベルなど)。

ユーザーのセッションで通常の整合性レベルのプロセスを実行して、ユーザーが作成したマップされたドライブリストを提供できます。これは、Windowsエクスプローラーが昇格されたセットアッププログラム用にマップされたドライブをコピーする方法です。

于 2012-08-20T01:44:11.470 に答える