在这里找到了很多答案,但很少自己提出问题。希望我在正确的地方。
我正在尝试使用此处Start a .Net Process as a Different User中的代码从c#中启动生成的进程。基本上有一个"发射器"进程几乎与链接中的代码完全相同,除了我将它包装在try / catch中,它以另一个用户的身份启动生成的进程。当我从命令行运行,切换用户ID等等时,似乎工作正常,我已通过生成的进程向stdout报告其凭据来验证。
问题是我想从作为NT Authority \ SYSTEM运行的进程运行启动器本身(允许运行外部进程的商业产品,因此凭据/权限被降级,我可以将SSH连接到另一个系统作为特定用户)当我这样做时,它会在proc.start()调用时获得Access Denied异常。我已经检查了权限,甚至尝试将它们打开,但仍然是相同的结果。我已经在启动程序中放了一个sleep()并让我的服务启动它所以我可以附加调试器,它肯定是访问被拒绝的异常,试图运行start方法来生成孩子。发现这一个Access Denied when executing Process.Start from Windows Service似乎相似,但经过这么多年没有回答,我无法发表评论......还没有足够的代表......;)
有关作为NT Authority \ SYSTEM运行的父进程有什么特别之处,链接中记录的方法未命中?任何想法/指示都会非常感激。
答案 0 :(得分:0)
根据Jeroen对原始问题的评论,这不能通过使用Process类作为NT Authority \ SYSTEM运行的服务来完成。使用CreateProcessAsUser(链接到注释中的文档)或重新安排您的环境以避免Process的问题。