6

C# WMI を使用して別のコンピューターで exe を起動すると、この exe は C#Processクラスを使用して別の exe を起動します。Directory.CreateDirectory最後の exe は、ネットワーク パス (aka ) を使用して呼び出しを試み\\\\comp1\d$\dir\ます。Directory.CreateDirectoryこの例外をスローします:

Access to the path '\\\\blah\blah\blah' is denied.   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, DirectorySecurity dirSecurity)
   at System.IO.Directory.CreateDirectory(String path, DirectorySecurity directorySecurity)

コンピューターのコンソールで 3 番目の exe を直接実行すると、この例外がスローされず、すべて正常に動作します。

ディレクトリが作成されているフォルダのセキュリティ設定には、「Everyone」に完全なアクセス許可が与えられています。

この問題を解決するにはどうすればよいですか?

4

3 に答える 3

2

また、WMI 経由でアプリを起動する場合は、3 番目の権限層があることに注意してください。たとえば、既存の WMI オブジェクトでメソッドを呼び出した場合、呼び出し元の権限やホスト exe の権限さえ委任されない可能性がありますが、プリンシパルは空になります。これはあなたに起こっているかもしれません。

[コンピューターの管理] に移動し、[サービスとアプリケーション] で、[WMI コントロール] ノードを右クリックして [プロパティ] を選択します。[セキュリティ] タブに移動し、正しい WMI 名前空間 (ほとんどの場合 root\CIMV2) に移動し、使用しているユーザーがそこでも適切な権限を持っていることを確認します。

于 2010-02-18T21:37:35.627 に答える
1

アーロンが言ったように、Windows共有のセキュリティには2つの要素があります。1つは共有自体のセキュリティです。2つ目は、その共有内のファイルとフォルダーのセキュリティです。

これが機能するためには、両方ともディレクトリの作成アクセスを許可する必要があります。

また、EVERYONEグループには、ドメインコンピューターアカウント、組み込みシステムアカウント、ドメインユーザー、ゲスト、および認証されたユーザーが含まれることも知っておく必要があります。

つまり、最初に実行したいのは、これが実際に実行されているユーザーを確認することです。マシンアカウントで実行されていて、ドメインの一部ではない場合は、そのマシンアカウントに共有およびファイルシステムへのアクセスを許可する必要があります。

于 2010-02-18T20:49:05.290 に答える
0

アクセス許可に関するいくつかの提案については、このスレッドを参照してください。

http://www.eggheadcafe.com/community/aspnet/2/10058550/how-to-create-a-folder-in.aspx

于 2010-02-18T20:30:51.613 に答える