![]() |
Re: XP shutdownbefehle
Wenn der Benutzer das Privile "ShutdownSystem" hat, dann sollte er shutdown.exe ohne Probleme verwenden können.
|
Re: XP shutdownbefehle
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
![]() Zitat:
@Dezipaitor: Dieses Privileg müsste der Administrator aber erst explizit vergeben. |
Re: XP shutdownbefehle
Komisch. Das Herunterfahrenprivileg ist bei mir auch der Hauptbenutzergruppe möglich. Jetzt kann ich nur nicht sagen, ob ich es eingestellt habe, oder es standard ist.
Zeitgesteuert kann man übrigens auch über die Aufgabenplanung unter Zubehör/System etwas machen - z.b. shutdown oder eine Batch aufrufen. Siehe ![]() Für die Programmierung von "Herunterfahren von System" empfehle ich übrigens lieber ExitWindowsXX oder WMI zu verwenden, weil man Fehler einfach besser überprüfen kann. Zudem können sich Parameter von shutdown.exe von Version zu Version ändern. Außerdem wäre es eine "Herausforderung" die shutdown.exe in allen Rafinessen nachzubauen. Dabei lernt man wirklich eine Menge. Verwendet shutdown.exe einen Dienst, um die ganzen Dinge, wie Dialoganzeige zu machen? Würde ich mal denken, oder? |
Re: XP shutdownbefehle
@Luckie
das mit den Adminrechten werd ich noch rausbekommen, aber theoretisch braucht man keine, da "Start"-->"Herunterfahren"-->"was auch immer" auch auf die Shutdown.exe zugreifen müsste... Zitat:
Zitat:
RunDLL32.EXE powrprof.dll,SetSuspendState das funzt, habsch auch schon eingebaut, macht aber wie gesagt nur standby und ich will nicht erst über Standby in den Ruhezustand...hab da was gefunden: Ruhezustand.bat powercfg /hibernate on rundll32.exe powrprof.dll,SetSuspendState Standby.bat powercfg /hibernate off rundll32.exe powrprof.dll,SetSuspendState Wie kann ich sowas in ein Prog. einbauen ohne gleich die *.bat zu erstellen. |
Re: XP shutdownbefehle
Zitat:
Zitat:
|
Re: XP shutdownbefehle
Zitat:
Zitat:
Zurück zur Frage: Ruhezustand.bat powercfg /hibernate on rundll32.exe powrprof.dll,SetSuspendState Standby.bat powercfg /hibernate off rundll32.exe powrprof.dll,SetSuspendState Wie krieg ich das in das Prog. ohne 'ne *.bat zu erstellen? |
Re: XP shutdownbefehle
Zitat:
![]() |
Re: XP shutdownbefehle
Das Herunterfahren hat nichts mit Adminrechten zu tun.
Man kann die Gruppe Administratoren und den Benutzer Administrator so einstellen, dass er nichts mehr machen kann. Es geht nur um das Shutdown Privileg, was Administratoren und Hauptbenutzer normal haben. Die Privilegien sind immer angepasst! Denn was die Gruppen und Benutzer so mächtig macht, sind eben die Privilegien. Seht unter den lokalen Kontorichtlinen mit "gpedit.msc" - dem PolicyEditor nach. Da kann man auch dem Gast Shutdownrechte geben. Zitat:
Zitat:
Mit rundll32 rufst du eine Funktion auf, die in der powrprof.dll enthalten ist. Diese Funktion ![]() Ich würde dir empfehlen, direkt die Funktionen zu verwenden und nicht über Batch-Dateien zu gehen. Man verwendet Batch nur dann, wenn mal kurz und einfach etwas benötigt und mein keine Ahnung von Programmierung hat oder der Aufwand dafür zu groß wäre. Für den Zwischenfall gäbe es ja auch noch die MS Windows Skript Sprache, die extra für soetwas gemacht wurde. (sorry keine Ahnung, wie die wirklich heißt). In der ![]()
Delphi-Quellcode:
(*
This demonstration tries to shutdown your computer by enabling the needed privilege and calling the WinAPI-function afterwards. The shutdown will be cancelled after ten seconds. *) program SimpleShutdown; {$APPTYPE CONSOLE} uses SysUtils, JwaWindows, JwsclExceptions, JwsclToken; var Token: TJwSecurityToken; begin try Token:=TJwSecurityToken.CreateTokenByProcess(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_READ or TOKEN_QUERY); except on E: EJwsclOpenProcessTokenException do begin Writeln(E.Message); Readln; Exit; end; end; try if Token.PrivilegeAvailable[SE_SHUTDOWN_NAME] then begin Writeln('SE_SHUTDOWN_NAME is available'); Token.PrivilegeEnabled[SE_SHUTDOWN_NAME]:=True; end else Writeln('SE_SHUTDOWN_NAME is not available'); finally FreeAndNil(Token); end; if not InitiateSystemShutdown(nil, 'The computer will be shut down in 60 seconds.', 60, False, False) then Writeln(SysErrorMessage(GetLastError)) else begin Sleep(10000); AbortSystemShutdown(nil); //stops the shutdown end; Readln; end. |
Re: XP shutdownbefehle
Zitat:
Delphi-Quellcode:
zwar super lösung, aber geht über mein Verständnis raus, kein plan, was der da macht und das gefällt mir net, wenn ein Programm was macht und ich nicht weiß was...
(*
This demonstration tries to shutdown your computer by enabling the needed privilege and calling the WinAPI-function afterwards. The shutdown will be cancelled after ten seconds. *) program SimpleShutdown; {$APPTYPE CONSOLE} uses SysUtils, JwaWindows, JwsclExceptions, JwsclToken; var Token: TJwSecurityToken; begin try Token:=TJwSecurityToken.CreateTokenByProcess(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_READ or TOKEN_QUERY); except on E: EJwsclOpenProcessTokenException do begin Writeln(E.Message); Readln; Exit; end; end; try if Token.PrivilegeAvailable[SE_SHUTDOWN_NAME] then begin Writeln('SE_SHUTDOWN_NAME is available'); Token.PrivilegeEnabled[SE_SHUTDOWN_NAME]:=True; end else Writeln('SE_SHUTDOWN_NAME is not available'); finally FreeAndNil(Token); end; if not InitiateSystemShutdown(nil, 'The computer will be shut down in 60 seconds.', 60, False, False) then Writeln(SysErrorMessage(GetLastError)) else begin Sleep(10000); AbortSystemShutdown(nil); //stops the shutdown end; Readln; end. [edit=Luckie]Delphi-Tags gesetzt. Mfg, Luckie[/edit] |
Re: XP shutdownbefehle
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz