5

アプリケーションのサンドボックス化が必要なプロジェクトに取り組んでいます。Windowsユーザーを作成し、ディレクトリを作成し、ディレクトリにアプリケーションを入力して、ユーザーとしてアプリケーションを実行することができます。これは、コンソールアプリケーションとして実行すると完全に正常に機能しますが、サービスとしてインストールすると、次の例外が発生します。

System.ComponentModel.Win32Exception: Access is denied
at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()

この例外をスローするコードは次のとおりです。

_process = new Process
     {
     StartInfo =
        {
            Arguments = "",
            CreateNoWindow = true,
            ErrorDialog = false,
            FileName = instanceDirectory + "program.exe",
            WorkingDirectory = instanceDirectory,
            UseShellExecute = false,


            UserName = GetUserNameForInstance(_id),
            Password = GetPasswordForInstance(_id),
            Domain = ""
        },
    EnableRaisingEvents = true
    };

_process.Exited += ProcessExited;
_process.Start();

繰り返しますが、これはWindowsサービスとして実行している場合にのみスローされます。このサービスは、Windowsの[サービス]パネルに従って、ローカルシステムで実行されています。

何か案は?

4

2 に答える 2

1

アカウントには、使用しているリソースに対する権限がありますか?ディレクトリの読み取りと書き込みの機能はありますか?

これらのタイプの状況では、99%の確率でそれは許可の問題です。

于 2010-01-17T04:07:49.520 に答える
1

IO操作に必要なアクセス許可(ACLアクセス許可を含む)を持つドメインアカウントとしてサービスを実行する方がよい場合があります。

次の例では、「Alterter」サービスがローカルサービスアカウントとして実行されるように設定されています。あなたの場合、DOMAIN\UserAccountとしてサービスを実行することをお勧めします。

代替テキスト
(ソース:windows-xp-services.com

于 2010-01-17T07:40:54.870 に答える