AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Betriebssysteme Windows 2003 mit Konsolenanwendung neustarten
Thema durchsuchen
Ansicht
Themen-Optionen

Windows 2003 mit Konsolenanwendung neustarten

Ein Thema von gsh · begonnen am 6. Nov 2005 · letzter Beitrag vom 8. Nov 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#1

Windows 2003 mit Konsolenanwendung neustarten

  Alt 6. Nov 2005, 12:10
Hi DPler

Ich möchte gern des wenn meine Konsollenanwendung gestartet wird der Windows 200 Server neugestartet wird.

Mit dem Code:
Delphi-Quellcode:
function ExWindows(const AFlag: Word): Boolean;
var
  vi : TOSVersionInfo;
  hToken : THandle;
  tp : TTokenPrivileges;
  h : DWord;
begin
  result:= false;

  vi.dwOSVersionInfoSize:=SizeOf(vi);

  if GetVersionEx(vi) then
  begin
    if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then
    begin
      // Windows NT
      // Achtung bei Delphi 2 muß @hToken stehen ...
      if OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES,hToken) then
      begin
        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(Aflag, 0);
      end;
    end
    else
    begin // Windows 95
      Result := ExitWindowsEx(Aflag, 0);
    end;
  end;
end;

begin
  ExWindows(EWX_Reboot);
end.
geht des aber nicht.

Irgendwelche Idee wie der Code für 2003 ausschauen muss?
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#2

Re: Windows 2003 mit Konsolenanwendung neustarten

  Alt 8. Nov 2005, 00:31
*push*

Des muss doch gehen
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von retnyg
retnyg

Registriert seit: 12. Feb 2005
193 Beiträge
 
#3

Re: Windows 2003 mit Konsolenanwendung neustarten

  Alt 8. Nov 2005, 03:17
wie wäre es wenn du einfach die shutdown.exe verwendest, die bei windows dabei ist ?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Windows 2003 mit Konsolenanwendung neustarten

  Alt 8. Nov 2005, 03:35
Warum debuggst du das nicht einfach mal und guckst dir die Rückgabewerte der API Funktionen an? natürlcih it der Fehler schwer zu finden, wenn man von vorneherein keinerlei Überprüfung der Rückgabewerte vornimmt.

So sieht es zum beispiel besser aus:
Delphi-Quellcode:
function EnablePrivilege(const Privilege: string; fEnable: Boolean; out
  PreviousState: Boolean): DWORD;
var
  Token : THandle;
  NewState : TTokenPrivileges;
  Luid : TLargeInteger;
  PrevState : TTokenPrivileges;
  Return : DWORD;
begin
  PreviousState := True;
  if (GetVersion() > $80000000) then
    // Win9x
    Result := ERROR_SUCCESS
  else
  begin
    // WinNT
    if not OpenProcessToken(GetCurrentProcess(), MAXIMUM_ALLOWED, Token) then
      Result := GetLastError()
    else
    try
      if not LookupPrivilegeValue(nil, PChar(Privilege), Luid) then
        Result := GetLastError()
      else
      begin
        NewState.PrivilegeCount := 1;
        NewState.Privileges[0].Luid := Luid;
        if fEnable then
          NewState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
        else
          NewState.Privileges[0].Attributes := 0;
        if not AdjustTokenPrivileges(Token, False, NewState,
          SizeOf(TTokenPrivileges), PrevState, Return) then
          Result := GetLastError()
        else
        begin
          Result := ERROR_SUCCESS;
          PreviousState :=
            (PrevState.Privileges[0].Attributes and SE_PRIVILEGE_ENABLED <> 0);
        end;
      end;
    finally
      CloseHandle(Token);
    end;
  end;
end;
Da kann man wunderschön den Rückgabewert abfragen und gucken, was eventuell schiefgelaufen ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Windows 2003 mit Konsolenanwendung neustarten

  Alt 8. Nov 2005, 09:59
Moin gsh,

das wird vermutlich deshalb nicht gehen, da ein 2003 Server, bei Standardinstallation, eine Begründung für einen Neustart abfragt.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Windows 2003 mit Konsolenanwendung neustarten

  Alt 8. Nov 2005, 10:19
Zitat von Christian Seehase:
das wird vermutlich deshalb nicht gehen, da ein 2003 Server, bei Standardinstallation, eine Begründung für einen Neustart abfragt.
Das wollt ich auch grad sagen. Weiss denn einer wie man diese Begründung abschalten kann, so dass das System ohne blöde Frage neu startet.
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#7

Re: Windows 2003 mit Konsolenanwendung neustarten

  Alt 8. Nov 2005, 11:17
Zitat von Jelly:
Zitat von Christian Seehase:
das wird vermutlich deshalb nicht gehen, da ein 2003 Server, bei Standardinstallation, eine Begründung für einen Neustart abfragt.
Das wollt ich auch grad sagen. Weiss denn einer wie man diese Begründung abschalten kann, so dass das System ohne blöde Frage neu startet.
Vielleicht indem man bei MSDN-Library durchsuchenExitWindowsEx einen der MSDN-Library durchsuchenSystem Shutdown Reason Codes angibt...
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Windows 2003 mit Konsolenanwendung neustarten

  Alt 8. Nov 2005, 11:26
Ich dachte da mehr dran in den Gruppenrichtlinien was zu ändern, hab aber bislang nichts gefunden.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Windows 2003 mit Konsolenanwendung neustarten

  Alt 8. Nov 2005, 11:31
Moin Jelly,

gpedit.msc
Computerkonfiguration\Administrative Vorlagen\System
und hier der Punkt
Ereignisprotokollierung für Herunterfahren anzeigen.

Das funktioniert unter XP Pro und Server 2003
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Windows 2003 mit Konsolenanwendung neustarten

  Alt 8. Nov 2005, 11:47
Danke
Das hätt ich so nie gefunden.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz