![]() |
shutdown!
Hi @ all
allso, hab jetz schon alles versucht, hab gesucht gesucht gesucht und gesucht und nix gefunden. Ich hab eigentlich ne ganz einfache frage, wie schaff ich es meinen Pc herunterzu fahren, dazu hab ich schon viel gefunden, aber immer wenn ich den code dann benutze, passirt garnix. Warum? Ich raffs net, ach, ich hab windows xp proffesional, aber das müsste doch keinen unterschied machen oder? [edit=sakura] Sch*** aus dem Titel entfernt. Mfg, sakura[/edit] |
Re: Sch*** shutdown!
Moin BornToBeBreit,
nimm mal das Kraftwort aus dem Titel raus. Weiters waere es ganz interessant zu wissen, welche Codes du verwendest hast. Greetz alcaeus |
Re: Sch*** shutdown!
Welchen Code hast du denn bereits ausprobiert ?
//Verdammt bist du schnell, alci // War das nicht einfach
Delphi-Quellcode:
?
Shotdown
|
Re: Sch*** shutdown!
Kann ich euch sagen, Jungs: Vermutlich nur den normalen ExitWindowsEx-Befehl. Der Teil, dass man auf NT-System erst mal ein bestimmtes Privileg holen muss, wird immer gern überlesen. Daher auch:
Zitat:
|
Re: Sch*** shutdown!
Also ich benutze folgenden code
Delphi-Quellcode:
[Edit]Doppelten Code entfernt[/EDIT]
function ExitWin(flag:word): Boolean;
var vi : TOSVersionInfo; hToken : THandle; tp : TTokenPrivileges; h : DWord; begin //result := false; vi.dwOSVersionInfoSize:=SizeOf(vi); GetVersionEx(vi); if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then // Windows NT begin // Achtung bei Delphi 2 muß @hToken stehen ... !!!! ????? OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,hToken); 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(flag,0); end else // Windows 95 begin Result := ExitWindowsEx(flag,0); end; end; [edit=Sharky]Tags korigiert und doppelten Code entfernt. Mfg, Sharky[/edit] |
Re: Sch*** shutdown!
Was ist denn hiermit?
Delphi-Quellcode:
function MyExitWindows(RebootParam: Longword): Boolean;
var TTokenHd: THandle; TTokenPvg: TTokenPrivileges; cbtpPrevious: DWORD; rTTokenPvg: TTokenPrivileges; pcbtpPreviousRequired: DWORD; tpResult: Boolean; const SE_SHUTDOWN_NAME = 'SeShutdownPrivilege'; begin if Win32Platform = VER_PLATFORM_WIN32_NT then begin tpResult := OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, TTokenHd); if tpResult then begin tpResult := LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, TTokenPvg.Privileges[0].Luid); TTokenPvg.PrivilegeCount := 1; TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; cbtpPrevious := SizeOf(rTTokenPvg); pcbtpPreviousRequired := 0; if tpResult then Windows.AdjustTokenPrivileges(TTokenHd, False, TTokenPvg, cbtpPrevious, rTTokenPvg, pcbtpPreviousRequired); end; end; Result := ExitWindowsEx(RebootParam, 0); end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin MyExitWindows(EWX_POWEROFF or EWX_FORCE); end; |
Re: Sch*** shutdown!
Hallo Kidix,
warum hast Du den Source gepostet? Kannst Du den unterschied zu BornToBeBreit's geposteten Code erklären? Außerdem enthält Dein Code einen Fehler. Das Tokenhandle wird nicht mit CloseHandle freigegeben. |
Re: Sch*** shutdown!
Hi.
Es geht auch einfacher. Die nette Firma Microsoft hat nämlich ein Programm geschrieben, dass in ungefähr das macht, was beschrieben wurde... ;-) Bei XP gehts auf jeden fall... Andere Betriebssysteme hab ich nicht zum Testen zur verfügung.
Delphi-Quellcode:
mfg, Waldteufel
ShellExecute(Handle, PChar('open'), PChar('C:\Windows\System32\shutdown.exe'), PChar('-s'), SW_HIDE);
{ code ungetestet, da delphi gerade in reparatur... } |
Re: Sch*** shutdown!
Hallo Waldteufel,
das shutdown-Dienstprogramm gibts nur unter XP und 2k (glaub ich jedenfalls), und man braucht Admin-Rechte um es benutzen zu koennen. Ganz so freundlich waren die Jungs von MS doch nicht ;) Greetz alcaeus |
Re: Sch*** shutdown!
Hi.
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:07 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