Autor Beitrag
MazeMan
Hält's aus hier
Beiträge: 16



BeitragVerfasst: Do 14.11.02 22:32 
Ich habe jetzt schon eine Menge versucht, aber der Computer will sich einfach nicht unter Delphi ausschalten lassen :crying: :autsch:

Das normale ExitWindows - Verfahren nutzt mir nichts, aber ExitWindowsEx macht unter XP nicht mit :!:
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 14.11.02 22:42 
Unter NT basierenden Systemen mußt du dir erst die Rechte holen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
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
    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;

Aufruf mit:
ausblenden Quelltext
1:
ExitWin(EWX_POWEROFF);					
MazeMan Threadstarter
Hält's aus hier
Beiträge: 16



BeitragVerfasst: Fr 15.11.02 08:38 
Titel: [b]Danke für den Quelltext[/b]
Der Text hat mir super geholfen, dieses Problem zu lösen. Jetzt lässt der Computer sich besser herunter- und wieder rauffahren. Danke für den Lösungs nsatz des kleinen Problems. :oops: :idea:
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 15.11.02 08:53 
Ich würde mich an deiner Stelle ein bisschen mit der Theorie hinter den NT-Systemen beschäftigen. Diese Rechte-Sache wird dir auch anderweitig noch begegnen. Etwa beim Registry-Zugriff auf bestimmte Schlüssel (*zonk*, wenn du keine Admin-Rechte hast), beim Zugriff auf bestimmte Ordner ...

Das lässt sich evtl. nicht in jedem Fall mit dem Holen der Rechte lösen, aber es gibt Prüffunktionen, die man nutzen kann und sollte, und mit deren Hilfe man die entsprechenden Funktionen in seiner Anwendung dann deaktivieren oder verstecken oder gar nicht erst ausführen lassen kann.
MazeMan Threadstarter
Hält's aus hier
Beiträge: 16



BeitragVerfasst: Fr 15.11.02 21:16 
Titel: Re:Woher bekommt man diese Theorie?
Woher bekommt man diese Theorie, wenn die FAQs nicht reichen? Ich bin noch ein ziemlicher Neuling in Sachen Programmierung, über 'Hello World' und kleine Anwendungen bin ich leider noch nicht hinausgekommen. Ich werde mcih auf alle Fälle noch weiter damit beschäftigen :!:
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 15.11.02 21:37 
Im Forum immer schön mitlesen, auch in C und WinAPI Foren. Source Code studieren,
[werbung]Auf meiner Seite sind fast alle Programme mit Source zu finden[/werbung]
Tutorials lesen, Themen vertiefen, und wen man die Lösung hat mal etwas nachforschen warum das so ist und wieso.

Und wenn es um Windows geht ist das MSDN und die MS Knowledgebase immer ein guter Anlaufpunkt. Und was speziell NT und höher angeht kann ich diese Seiten empfehlen: www.sysinternals.com und www.jsiinc.com.

Und das MSD kannman sich hier in Form des PSDK noch runterladen: www.microsoft.com/ms...atformsdk/sdkupdate/


Zuletzt bearbeitet von Luckie am Fr 15.11.02 22:26, insgesamt 1-mal bearbeitet
MazeMan Threadstarter
Hält's aus hier
Beiträge: 16



BeitragVerfasst: Fr 15.11.02 22:18 
Super, das könnte weiterhelfen

Danke