我正在尝试从c#windows服务关闭网络上的远程计算机。当我在测试应用程序中运行下面的代码时它工作正常,但是当它从服务运行时没有任何反应。
我觉得它可能与权限有关,但不确定。
有人有任何建议吗?
Process p = new Process();
p.StartInfo.FileName = "shutdown";
p.StartInfo.Arguments = @"/s /f /m \\pc-name /t 0";
p.Start();
答案 0 :(得分:1)
服务规范与其他凭据(本地系统,网络服务等)一起运行,而不是您的测试应用程序。您应该考虑创建具有适当权限的域用户,并将该用户添加到您的服务中。
答案 1 :(得分:0)
关闭将失败。
此MSDN article包含一个代码段,向您展示如何从程序中设置SE_SHUTDOWN_NAME权限(以及如何使用Windows API关闭/重新启动PC而不是调用shutdown命令)。
但是,由于您是远程运行而您可能无法以编程方式设置这些权限,因此可以通过以交互方式登录到远程计算机来执行此操作,并且:
你只需要这样做一次。
祝你好运。