我正在一个需要对应用程序进行沙箱处理的项目。我能够创建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的身份运行服务。
(来源:windows-xp-services.com)