C# 以用户身份从windows服务运行进程失败,访问被拒绝?

C# 以用户身份从windows服务运行进程失败,访问被拒绝?,c#,windows-services,process,sandbox,C#,Windows Services,Process,Sandbox,我正在处理一个需要沙箱处理应用程序的项目。我能够创建windows用户、创建目录、使用应用程序填充目录,并以用户身份运行应用程序。这在作为控制台应用程序运行时完全可以正常工作,但当我将其作为服务安装时,会出现以下异常: System.ComponentModel.Win32Exception: Access is denied at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) at S

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


有什么想法吗?

该帐户是否对您使用的资源有预先授权?它有读写目录的能力吗


在这些类型的情况下,99%的时间是预授权问题。

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

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



(来源:)

用户拥有这些资源的权限,当启动该资源的应用程序从控制台运行时,该进程将正确启动。我唯一的猜测是,它实际上是一个问题,即作为服务的不同用户启动流程。作为服务和控制台运行的唯一显著区别是,当控制台作为当前用户运行时,服务具有本地系统权限。是否有任何类型的标志我应该启动服务?可执行文件位于哪里?我在这里面临完全相同的问题。你找到解决办法了吗?