为什么ExitWindows EWX_SHUTDOWN只能注销,不能关机呢?
#include <windows.h>#include <iostream>
int main()
{
HANDLE hToKen;
TOKEN_PRIVILEGES tkp;//存储当前权限
if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToKen));
{
printf("获得权限失败");
}
//拿出权限
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges.Luid);
//更改权限
tkp.PrivilegeCount = 1;
tkp.Privileges.Attributes = SE_PRIVILEGE_ENABLED;
//使用权限
AdjustTokenPrivileges(hToKen,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);
//检测权限是否更改成功
if(GetLastError() != ERROR_SUCCESS)
{
printf("权限未更改");
}
//ExitWindows(EWX_SHUTDOWN,0); 为什么这行代码只能注销不能关机
if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE,
SHTDN_REASON_MAJOR_OPERATINGSYSTEM |
SHTDN_REASON_MINOR_UPGRADE |
SHTDN_REASON_FLAG_PLANNED))
return 0;
} 本帖最后由 无闻无问 于 2020-4-28 13:14 编辑
我觉得提权没成功… 关机命令不是shutdown吗 无闻无问 发表于 2020-4-28 13:11
我觉得提权没成功…
用另一个提权函数RtlAdjustPrivilege试试…… 兄弟,我把你的代码粘贴生成,能成功关机…vs2015+win7成功的… 无闻无问 发表于 2020-4-28 13:23
兄弟,我把你的代码粘贴生成,能成功关机…vs2015+win7成功的…
主要是用注释的那一行,无法关机,必须用下面那行,不知为什么? Rodriguezs 发表于 2020-4-28 13:27
主要是用注释的那一行,无法关机,必须用下面那行,不知为什么?
注释那行加个Ex… 无闻无问 发表于 2020-4-28 13:33
注释那行加个Ex…
哦,谢谢呀。
页:
[1]