Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

Win2k programmgesteuert herunterfahren

mch / 1 Antworten / Baumansicht Nickles

Wie kann ich auf möglichst einfache Weise Windows2000 programmgesteuert herunterfahren? Gibt es evtl. ein durchschaubares Beispielprogramm für die Privilegverwaltung, also wie ich meinem Programm erlauben kann ExitWindows zu benutzen?

mfg, M@rtin

bei Antwort benachrichtigen
(Anonym) mch „Win2k programmgesteuert herunterfahren“
Optionen

Du hast ja leider nicht geschrieben, welche Programmiersprache, ich schicke dir einfach die Delphi-Variante.
Fkt in C genauso: ExWindowsEx und AdjustTokenPrivileges sind Standard-API-Befehle. Beachten musst Du, dass die Funktion in Win98 false zurückgibt, da es dort keine Privilegien gibt. Also den Rückgabewert nicht auswerten, sonst fährt das Prog in Win2000 runter und unter Win9x nicht.

function SetPrivilege(sPrivilegeName : string; bEnabled : boolean): boolean;
var TPPrev,
TP : TTokenPrivileges;
Token : THandle;
dwRetLen : DWord;
begin
Result := False;
OpenProcessToken( GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, Token);
TP.PrivilegeCount := 1;
if LookupPrivilegeValue(Nil, PChar( sPrivilegeName ),TP.Privileges[ 0 ].LUID ) then begin
if (bEnabled) then begin
TP.Privileges[ 0 ].Attributes := SE_PRIVILEGE_ENABLED;
end else begin
TP.Privileges[ 0 ].Attributes :=0;
end;
dwRetLen := 0;
Result := AdjustTokenPrivileges(Token,False,TP,SizeOf( TPPrev ),TPPrev,dwRetLen );
end;
CloseHandle( Token );
end;

begin
SetPrivilege( 'SeShutdownPrivilege', True );
ExitWindowsEx(EWX_POWEROFF,0);
end.

bei Antwort benachrichtigen