- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我们使用 ExitWindowsEx
函数关闭计算机之前,我们必须像这样向进程添加 SE_SHUTDOWN_NAME
权限:
HANDLE hToken = NULL;
LUID luid;
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken);
LookupPrivilegeValue(L"", SE_SHUTDOWN_NAME, &luid);
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
bRet = AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(tp), NULL, 0);
ExitWindowsEx(EWX_REBOOT, 0);
这工作得很好。
我知道这是设计使然,但我不明白 Microsoft 决定必须在使用 ExitWindowsEx
函数之前启用特权的动机是什么。它显然不是为了防止进程重启计算机而设计的,因为重启所需要做的就是将 SE_SHUTDOWN_NAME 添加到进程并调用 ExitWindowsEx
。
Windows 开发术语可以将上面的代码直接放入 ExitWindowsEx
函数中。
最佳答案
您不需要添加它(您不能为您当前的 token 添加权限),您需要启用它。
大多数权限在默认情况下是禁用的,可能是为了避免意外使用(就像文件的只读属性一样)。无需一直在启用特权的情况下到处跑,让 ExitWindowsEx
函数本身启用它会破坏与其他依赖特权的函数的一致性。
关于winapi - 为什么我们在使用ExitWindowsEx之前需要添加SE_SHUTDOWN_NAME权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22634582/
我想知道当某个软件需要重新启动、关闭、注销或休眠 Windows 时,最佳做法是什么: 使用ExitWindowsEx API 使用关机命令及其参数 每种方法的优点和缺点是什么? 谢谢 最佳答案 我总
我正在尝试让 Windows 7 计算机从 C# WPF 应用程序重新启动。为此,我添加了以下代码(我使用了一个枚举,但为了使代码简短,我只是在此处插入常量): [DllImport("user32.
创建一个带有按钮点击事件的表单(我使用的是 .NET 2.0): { Thread.Sleep(3000); ExitWindowsEx(0,0); // shutdown } 点击按钮,按 Left
当我调用注销时,它起作用了。但是关机和重启不起作用。一切看起来都正常。我查看了关于 SO 和其他地方的其他示例,代码在大多数地方看起来都非常统一。所以我认为它可能不是代码。 我以管理员身份运行,并且在
我是一名优秀的程序员,十分优秀!