【发布时间】:2013-09-06 03:13:11
【问题描述】:
当我以用户权限在 Win7(UAC 开启)上运行我的应用程序时。它可以成功重启操作系统,那么在这种情况下,不需要管理员权限吗?有没有官方文件来描述这个?感谢任何 cmets。
HANDLE hToken = NULL;
LUID luid;
BOOL bRet = OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken);
bRet = 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);
bRet = ExitWindowsEx(EWX_REBOOT|EWX_FORCE, 0);
【问题讨论】:
-
您的问题到底是什么?你的代码有效吗?如果没有,什么不起作用?你有错误吗?如果您的代码有效,您是在问我们“为什么它像我写的那样有效?”?我不知道你在这里问我们什么。
-
我的意思是它有效。因为我认为这个动作应该需要管理员权限,但是,如上面的代码,具有普通用户权限,它也可以工作。那么,UAC 是通过了吗?
-
重启或关闭机器不需要管理员权限 - 如果这样做,普通用户将无法正常重启或关闭,只能拔掉电源线。跨度>