代码之家  ›  专栏  ›  技术社区  ›  Mike

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

  •  4
  • Mike  · 技术社区  · 16 年前

    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中的“服务”面板,该服务正在本地系统下运行。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Glorfindel Doug L.    7 年前

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

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

    alt text
    windows-xp-services.com )

        2
  •  1
  •   David Basarab    16 年前

    在这种情况下,99%的时间是任务前的问题。