AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Problem diskpart unter Server w2k3 64bit starten
Thema durchsuchen
Ansicht
Themen-Optionen

Problem diskpart unter Server w2k3 64bit starten

Ein Thema von cramer · begonnen am 8. Sep 2008 · letzter Beitrag vom 9. Sep 2008
 
Benutzerbild von cramer
cramer

Registriert seit: 23. Jun 2004
Ort: Velbert (NRW)
108 Beiträge
 
Delphi 2006 Enterprise
 
#1

Problem diskpart unter Server w2k3 64bit starten

  Alt 8. Sep 2008, 18:11
Hallo,
ich möchte aus meinem Programm (BDS2006 unter WXP compiliert) Diskpart.exe starten.
Unter WXP und W2K geht es ohne Probleme, aber unter W2K3 Server 64bit lässt es sich nicht starten.
Zum Test ein Start von notepad.exe geht auch unter W2K3 64bit problemlos.
Der Punkt CreateProcess schlägt fehl, irgendeine Idee woran es liegen könnte ?
Delphi-Quellcode:
const
      exe_Ok = 0; // Programm Start und Ende OK
      exe_Fehler = 1; // Fehler beim Programmstart
      exe_TimeOut = 2; // Zeitüberschreitung bei der Ausführung
      exe_TermOk = 3; // Nach Zeitüberschreitung konnte es beendet werden
      exe_TermErr = 4; // Nach Zeitüberschreitung konnte es nicht beendet werden

function exe_wait(prog, para : string;
                  timeout : integer;
                  terminate : boolean) : integer;
var prg, param, verz, ext : string;
    startupinfo : tStartupInfo;
    ProcessInfo : TProcessInformation;
    ExitCode : integer;
begin
   ExitCode := 0;
   prg := trim(prog);
   ext := trim(Ansilowercase(extractFileExt(prg)));
   param := getEnvStr(Para) + chr(0);
   verz := ExtractFilePath(prg);
   prg := prg + ' ' + param;
   fillchar(startupInfo, sizeof(tStartupInfo), 0);
   startupInfo.cb := sizeof(tStartupInfo);
   if createProcess(nil,
                    pchar(prg),
                    nil,
                    nil,
                    false,
                    NORMAL_PRIORITY_CLASS,
                    nil,
                    pchar(verz),
                    startupInfo,
                    processInfo)
   then begin
     if waitForSingleObject(processInfo.hProcess,timeout*1000) = Wait_TimeOut
        then begin
          if terminate then begin
             if terminateProcess(processInfo.hProcess,exitCode)
                then result := exe_TermOK
                else result := exe_TermErr;
          end
          else result := exe_TimeOut;
        end
        else result := exe_ok;
     closeHandle(processInfo.hProcess);
   end
   else result := exe_Fehler; // <-- Dieser Fehler kommt zurück
  Application.ProcessMessages;
end;
Erfahrung ist etwas, daß man erst bekommt, kurz nachdem man es dringend gebraucht hätte.
  Mit Zitat antworten Zitat
 


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 16:13 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