我正在开发一个需要对应用程序进行沙盒处理的项目。我能够创建一个 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 中的“服务”面板,该服务在 LOCAL SYSTEM 下运行。
有任何想法吗?