PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Shutdown unter WinXP


Dr.Corn
26.01.2002, 19:54
Hallo Leute !

Unter Windows XP funktioniert der shutdownbefehl

exitwindowsex(EWX_SHUTDOWN,0);

nichtmehr ! hat da jemand eine andere Lösung ?

MfG dr.corn


Felix Kaiser
26.01.2002, 20:27
Wenn dieser Befehl nicht das tut was er tun sollte, dann hat die Anwendung nicht die entsprechenden Rechte um das System herunterzufahren und da kann die Anwendung selber verdammt wenig machen ....

Dr.Corn
26.01.2002, 21:48
Aber unter Windows Me und 98 hat er noch funktioniert !
Erst seit Windows XP funktioniert er nichtmehr !

MfG dr.corn

EDIT:

BTW bin unter Win XP als Admin eingeloggt hab also
volle Rechte !

Felix Kaiser
27.01.2002, 15:44
Du hast die Rechte, aber die Anwendung wohl nicht. Zu dem ist dieses Schutzsystem durch Rechteverteilung auf Anwendungen ein Bestandteil der NT-Technologie und davon hat weder Win98 was noch WinME, ein Vergleich ist daher mehr als sinnlos ...

Dr.Corn
27.01.2002, 19:38
Hab ich verstanden !

Danke !

Hats du ein Lösung wie ich den Pc trotzdem runterfahren kann?

Wäre dir sehr dankbar!

MfG dr.corn

Meistar
27.01.2002, 19:44
Von:Jon E. Scott (jscott@landstar.com)
Betrifft:Re: How to Shutdown NT
Newsgroups:borland.public.delphi.winapi
View this article only
Datum:1998/02/13

Bonny,

You have to give the app "security rights" in Win NT to shut down or
restart. Copy the following code to your app´s code. Simply call
RebootWinNT procedure to reboot the machine. If you want to shutdown,
change EWX_REBOOT to EWX_SHUTDOWN.


function ChangeSecurityForShutdown: Boolean;
{ This func changes security rights on the WinNT server }
{ to give app shutdown privileges. }
var
hToken : THandle;
tkp,
Newt : TTokenPrivileges;
retlength : DWORD;
begin
Result := False;
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES +
TOKEN_QUERY, @hToken) <> False then
begin
{ Get the LUID for shutdown privilege }
if LookupPrivilegeValue( nil, &acute;SeShutdownPrivilege&acute;,
tkp.Privileges[0].Luid) = True then
begin
tkp.PrivilegeCount := 1; // One to set
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
{ Get shutdown privilege for this process }
Result := AdjustTokenPrivileges(hToken, False, tkp,
SizeOf(TTokenPrivileges),
Newt,
retlength);
end;
end;
end;

procedure RebootWinNT;
begin
if ChangeSecurityForShutdown then
ExitWindowsEx(EWX_REBOOT, 0)
else
{ Failed to change security rights to give us shutdown
privilege. }
MessageDlg(&acute;Unable to modify security rights for shutdown
privileges.&acute;, mtError, [mbOK], 0);
end;

Dr.Corn
27.01.2002, 21:03
Vielen DANK !

Funzt Perfekt, keine weiteren Fragen mehr :D :D :D

MfG dr.corn