我正在一个需要对应用程序进行沙箱处理的项目。我能够创建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中“服务”面板下的“本地系统”下运行。

有任何想法吗?

最佳答案

您最好将其作为具有IO操作必需的权限(包括ACL权限)的域帐户运行。

在下面的示例中,“Alterter”服务被设置为作为本地服务帐户运行。在您的情况下,建议您以DOMAIN\UserAccount的身份运行服务。

c# - 从Windows服务以用户身份运行但访问失败的进程正在被拒绝?-LMLPHP
(来源:windows-xp-services.com)

10-07 19:54
查看更多