Code
1 var
2 VerInfo:TOSVersionInfo;
3 hToken:THANDLE;
4 tkp:TOKEN_PRIVILEGES;
5 Nothing:Cardinal;
6 begin
7 VerInfo.dwOSVersionInfoSize:=SizeOf(VerInfo);
8 GetVersionEx(VerInfo);
9 if VerInfo.dwPlatformId=VER_PLATFORM_WIN32_NT then
10 Begin
11 OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken);
12 LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkp.Privileges[0].Luid);
13 tkp.PrivilegeCount := 1;
14 tkp.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED;
15 AdjustTokenPrivileges(hToken, FALSE, tkp, 0,nil, Nothing);
16 End;
17 ExitWindowsEx(EWX_POWEROFF,0);//这句就是关机
18 //ExitWindowsEx(EWX_REBOOT,0);
19 end
1 var
2 VerInfo:TOSVersionInfo;
3 hToken:THANDLE;
4 tkp:TOKEN_PRIVILEGES;
5 Nothing:Cardinal;
6 begin
7 VerInfo.dwOSVersionInfoSize:=SizeOf(VerInfo);
8 GetVersionEx(VerInfo);
9 if VerInfo.dwPlatformId=VER_PLATFORM_WIN32_NT then
10 Begin
11 OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken);
12 LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkp.Privileges[0].Luid);
13 tkp.PrivilegeCount := 1;
14 tkp.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED;
15 AdjustTokenPrivileges(hToken, FALSE, tkp, 0,nil, Nothing);
16 End;
17 ExitWindowsEx(EWX_POWEROFF,0);//这句就是关机
18 //ExitWindowsEx(EWX_REBOOT,0);
19 end