关于win98程序控制关机的问题
procedure TzlUtils.ExitWindows32(AShutDownFlag: Word);
// ShutDownFlag in [EWX_REBOOT, EWX_SHUTDOWN, EWX_LOGOFF, EWX_POWEROFF]
function ChangeNTSecurityForShutdown: Boolean;
var
hToken : THandle;
tkp, Newt : TTokenPrivileges;
retlength : DWORD;
begin
Result := False;
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES +
TOKEN_QUERY, hToken) <> False then
begin
if LookupPrivilegeValue(nil, 'SeShutdownPrivilege',
tkp.Privileges[0].Luid) = True then
begin
tkp.PrivilegeCount := 1; // One to set
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
Result := AdjustTokenPrivileges(hToken, False, tkp,
SizeOf(TTokenPrivileges),
Newt, retlength);
end;
end;
end;
begin
if Win32PlatForm = VER_PLATFORM_WIN32_NT then
begin
if ChangeNTSecurityForShutdown then
ExitWindowsEx(AShutDownFlag, 0);
end
else if Win32PlatForm = VER_PLATFORM_WIN32_WINDOWS then
ExitWindows(AShutDownFlag, 0);
end;
我用上面的函数在win2000或winxp都可以成功的关机、重起、注销,但是在win98下所有的操作都变成了注销,不知道为什么,请问各位大侠该如何解决?