Registriert seit: 7. Nov 2007
22 Beiträge
|
Re: Problem beim Shutdown
8. Nov 2007, 20:14
Zitat von DeddyH:
Zitat von FreakyF:
Jetzt weiß ich leider noch nicht, wie ich die Funktion richtig aufrufen kann.
Und wo kann ich den Parameter Flag "EWX_Shutdown" setzen?
Z.B. so:
ExWindows(EWX_SHUTDOWN or EWX_FORCEIFHUNG);
Vielen Dank für die super Hilfe!
Hier nochmal der komplette Quellcode:
Delphi-Quellcode:
program shutdown;
{$APPTYPE CONSOLE}
uses
SysUtils, Windows;
function ExWindows( const AFlag: Word): Boolean;
var
vi : TOSVersionInfo;
hToken : THandle;
tp : TTokenPrivileges;
h : DWord;
begin
result:= false;
vi.dwOSVersionInfoSize:=SizeOf(vi);
if GetVersionEx(vi) then
begin
if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then
begin
// Windows NT
// Achtung bei Delphi 2 muß @hToken stehen ...
if OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES,hToken) then
begin
LookupPrivilegeValue( nil,' SeShutdownPrivilege', tp.Privileges[0].Luid);
tp.PrivilegeCount := 1;
tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
h := 0;
AdjustTokenPrivileges(hToken,False, tp,0,PTokenPrivileges( nil)^, h);
CloseHandle(hToken);
result := ExitWindowsEx(Aflag, 0);
end;
end
else
begin // Windows 95
Result := ExitWindowsEx(Aflag, 0);
end;
end;
end;
begin
ExWindows(EWX_SHUTDOWN or EWX_FORCEIFHUNG);
end.
|
|
Zitat
|