如何查看我是否具有SE_SHUTDOWN_NAME特权?

时间:2019-05-20 17:35:18

标签: windows powershell batch-file

我想使用任务计划程序将PC(Windows 10 Pro)挂起一段时间。在实践中,我运行的批处理文件有一定时间会挂起PC。接下来,我必须运行另一个将其打开的批处理文件。

我的问题是这些命令不起作用:

rundll32.exe powrprof.dll, SetSuspendState 0,1,0

,并且没有任何错误。我检查了事件日志浏览器,它只显示EventID 187(ApiCallerNameLength),而没有激活EventID 42(这应该激活Windows的暂停)。

我尝试了各种方法来解决该问题,但我不明白为什么它不起作用。

https://docs.microsoft.com/en-us/windows/desktop/api/powrprof/nf-powrprof-setsuspendstate

我认为本文是特权问题。你能帮我吗?

1 个答案:

答案 0 :(得分:0)

您可以使用whoami /priv来检查您的特权,并且应该看到类似以下内容的

Privilege Name                            Description                                                        State
========================================= ================================================================== ========
SeShutdownPrivilege                       Shut down the system                                               Disabled

如果列出了特权,则意味着您的用户帐户拥有特权。必须在脚本中专门启用才能使用它:

  

要关闭本地计算机,正在调用的线程必须具有SE_SHUTDOWN_NAME特权。默认情况下,用户可以在他们登录的计算机上启用SE_SHUTDOWN_NAME 特权,管理员可以在远程计算机上启用SE_REMOTE_SHUTDOWN_NAME特权。

Source

我还没有找到启用该特权的简单批处理解决方案,但是您可以通过使用SysInternals的-d选项的SysInternals psshutdown工具来完成同一工作。

我发现在脚本执行过程中修改权限的PowerShell解决方案对我不起作用。