아래의 프로그램을 실행하면 시스템 종료가 되면서
"이제 전원을 차단하여도 됩니다."라는 메세지만 나오고
전원 차단이 되지 않습니다. 수정할 부분을 좀 봐주세요
const
{ in Delphi nicht deklariertes }
ANYSIZE_ARRAY = 1;
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
var
Form1: TForm1;
strLine: string;
strLower: string;
strMsg: string; //was sagen
strMach: string; //welcher rechner
i, j: integer;
boExit,
boReboot, //neu booten
boForce : boolean; //anwendungen gezwungen schliessen
intTime: integer; //countdown
implementation
{$R *.DFM}
function ExitWindowsNT(uFlags : word) : boolean;
// Routine fr Windows NT
var
hToken : THandle;
ptkp, ptkpold : PTokenPrivileges;
r : dword;
begin
// Token Handle des aktuellen Prozesses ermitteln
if OpenProcessToken(GetCurrentProcess,
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
begin
// LUID fr shut down ermitteln und Privileg setzen
GetMem(ptkp,sizeof(TTOKENPRIVILEGES) +
(1-ANYSIZE_ARRAY) * sizeof(TLUIDANDATTRIBUTES));
LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME,
ptkp^.Privileges[0].Luid);
ptkp^.PrivilegeCount:=1; // Anzahl zu setzender Privilegien
ptkp^.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
// Privileg fr diesen Prozess setzen
r:=0;
ptkpold:=nil;
if AdjustTokenPrivileges(hToken, false, ptkp^, 0, ptkpold^, r)
then
InitiateSystemShutdown(PChar(strMach), PChar(strMsg), intTime,True, False);
end;
ExitWindowsNT:=GetLastError=ERROR_SUCCESS;
end;
[시작]->[시스템종료]에서 종료해도 같은 현상이 아닌지요?