3

login を使用して実行している Windows サービスがありますlocalhost\administrator。このサービスは、別の実行可能ファイル ( ) を呼び出すためのMyProcess.exeもので、ログ ファイルに何かを書き込むことになっています。サービスはProcess.Start()、次のようにプロセスを作成するために使用します。

var p = new Process();
p.StartInfo.FileName = processFileName;
p.StartInfo.Arguments = arg;
p.Start();

問題は、ログ フォルダへの書き込み権限が間違いなくMyProcess.exeあるにもかかわらず、ログ ファイルへの書き込み権限が拒否されているように見えることです。localhost\administratorコマンドラインから実行するMyProcess.exeと、完全に機能します。

では、別のユーザーログインを使用してプロセスが実行されている可能性はありますか?

MyProcess.exeログ ファイルへの書き込み権限が拒否されている理由を他に考えられますか?

更新:ログ ファイルはローカル マシンに書き込まれていますが、ネットワーク アドレスを使用しています\\MyPC\LogFolder。を参照するようにコードを変更するとC:\MyFolder、すべて正常に動作します。明らかにネットワーク アドレスに問題があります (ローカルであっても)。

ローカル システム アカウントがファイルにアクセスできるようにするには、フォルダーにどのような共有設定を行う必要がありますか?

4

3 に答える 3

3

なりすましを使用している場合は、現在のユーザーまたは指定されたユーザーになりすますことよりも。そうでない場合は、ローカルシステムの権限で、ローカルシステムの下で実行されます。

于 2012-05-08T13:32:03.007 に答える
1
p.StartInfo.Domain = "UserName";
p.StartInfo.Password = "Passw0rd!";

ユーザー名は次の場所から取得できます。

Thread.CurrentPrincipal.Identity.Name
于 2012-05-08T13:33:05.427 に答える
1

私はそれを解決しました。

私の更新で指摘されているように、問題は、プロセスがネットワーク共有アドレス を使用してログ フォルダーのアドレスを指定して\\MyPC\LogFolderいたことc:\Logfolderです。

そのため、ローカル フォルダーのアドレスを指定すると、そのlocalhost\Administratorアカウントには十分な権限があると見なされるようです。しかし、ネットワーク共有を経由するときは、有効なネットワーク資格情報を提示する必要がありますが、それlocalhost\Administratorだけでは不十分です。use に変更するとMYDOMAIN\MyUser、ネットワーク共有アドレスを使用しても動作します。

于 2012-05-08T14:16:58.930 に答える