我写了一个程序,要我的机器在半夜的时候定时关机。
我使用了ExitWindows() 和ExitWindowsEx()
这两个函数,可是我的机器只是被注销,而没有被关闭。我尝试了所有的参数值,可是都不行。我用的操作系统是:windows 2000 ser 和windows2000 per
顺便问一下:以前我搞到了一个程序c++builder写的,这个程序只要你是以administrator登陆对方的机器(网上邻居),这个程序就可以关闭对方的机器。但是我找不到这个程序了。本来这个程序就可以把我上面的问题搞定。
我还记得那个程序的步骤:
第一步:取得对方机器的权限。
第二步:向对方机器发送关机指令。windows API中有这么几个函数。可是我忘记了。大家帮我想想。不胜感激。
我使用了ExitWindows() 和ExitWindowsEx()
这两个函数,可是我的机器只是被注销,而没有被关闭。我尝试了所有的参数值,可是都不行。我用的操作系统是:windows 2000 ser 和windows2000 per
顺便问一下:以前我搞到了一个程序c++builder写的,这个程序只要你是以administrator登陆对方的机器(网上邻居),这个程序就可以关闭对方的机器。但是我找不到这个程序了。本来这个程序就可以把我上面的问题搞定。
我还记得那个程序的步骤:
第一步:取得对方机器的权限。
第二步:向对方机器发送关机指令。windows API中有这么几个函数。可是我忘记了。大家帮我想想。不胜感激。
var
hdlProcessHandle : Cardinal;
hdlTokenHandle : Cardinal;
tmpLuid : Int64;
tkp : TOKEN_PRIVILEGES;
tkpNewButIgnored : TOKEN_PRIVILEGES;
lBufferNeeded : Cardinal;
Privilege : array[0..0] of _LUID_AND_ATTRIBUTES;
begin
hdlProcessHandle := GetCurrentProcess;
OpenProcessToken(hdlProcessHandle,
(TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY),
hdlTokenHandle);
// Get the LUID for shutdown privilege.
LookupPrivilegeValue('', 'SeShutdownPrivilege', tmpLuid);
Privilege[0].Luid := tmpLuid;
Privilege[0].Attributes := SE_PRIVILEGE_ENABLED;
tkp.PrivilegeCount := 1; // One privilege to set
tkp.Privileges[0] := Privilege[0];
// Enable the shutdown privilege in the access token of this process.
AdjustTokenPrivileges(hdlTokenHandle,False,tkp,Sizeof(tkpNewButIgnored),
tkpNewButIgnored,lBufferNeeded);
end;
关机:
AdjustToken;
ExitWindowsEx(EWX_POWEROFF, 0);