Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Problem diskpart unter Server w2k3 64bit starten (https://www.delphipraxis.net/120287-problem-diskpart-unter-server-w2k3-64bit-starten.html)

cramer 8. Sep 2008 18:11


Problem diskpart unter Server w2k3 64bit starten
 
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;

toms 8. Sep 2008 18:19

Re: Problem diskpart unter Server w2k3 64bit starten
 
Hallo

Was liefert denn
Delphi-Quellcode:
SysErrorMessage(GetLastError)
?

cramer 9. Sep 2008 10:00

Re: Problem diskpart unter Server w2k3 64bit starten
 
Also es wird immer seltsamer, im Windows Ordner liegt die Datei ohne Hidden Attribut etc.
Delphi-Quellcode:
Directory of C:\windows\system32
04.04.2006  14:00           263.680 diskpart.exe
               1 File(s)       263.680 bytes

C:\>attrib c:\windows\system32\diskpart.exe
A         C:\windows\system32\diskpart.exe
Ein Start C:\windows\system32\diskpart.exe endet aber mit Fehler: createProcess The system cannot find the file specified

Wenn ich aber C:\windows\system32\diskpart.exe in den Ordner c:\install kopiere funktioniert der Start
c:\install\diskpart.exe ohne Fehler

Reinhard Kern 9. Sep 2008 11:43

Re: Problem diskpart unter Server w2k3 64bit starten
 
Zitat:

Zitat von cramer
...
Wenn ich aber C:\windows\system32\diskpart.exe in den Ordner c:\install kopiere funktioniert der Start
c:\install\diskpart.exe ohne Fehler

Hallo,

besonders beliebt bei vista-usern: keine Zugriffsrechte auf system32?? Vielleicht nur für Admins.

Gruss Reinhard

cramer 9. Sep 2008 12:12

Re: Problem diskpart unter Server w2k3 64bit starten
 
Notepad.exe liegt auch in c:\windows\system32 und lässt sich starten.
Beim Vergleich der Security Einstellungen gibt es beim Notepad aber zusätzlich zu den "Administrators" noch "Users" und "Power Users" mit Read & Execute Berechtigung.
Im Taskmanager steht aber ohnehin als User meines Programms "Administrator" und wenn ich Notepad aus dem Programm heraus starte auch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:25 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