Einzelnen Beitrag anzeigen

Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.156 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Verrücktes Verhalten wenn cmd.exe von ShellExecute(..) gestartet wird

  Alt 21. Nov 2016, 10:15
Ich bin verwirrt.

Hier einmal etas ganz normales:
  1. Ich starte cmd
  2. Ich gebe "telnet" (ohne ") ein
  3. Telnet startet

Hier etwas komisches:
  1. Ich schreibe ein Delphi-Programm (siehe Code weiter unten)
  2. Ein Cmd-Fenster geht auf
  3. Ich gebe ein "telnet" (ohne ")
  4. Er sagt "Der Befehl "telnet" ist entweder falsch geschrieben oder konnte nicht gefunden werden"

Hier der Code:
Delphi-Quellcode:
program Project15;

{$APPTYPE CONSOLE}
{$R *.res}

uses
   System.SysUtils, WinApi.ShellApi, WinApi.Windows;

begin
   try
      Win32Check(
         ShellExecute(
            0,
            nil,
            'cmd',
            nil,
            nil,
            SW_SHOWDEFAULT
         ) > 32
      );
   except
      on E: Exception do
         Writeln(E.ClassName, ': ', E.Message);
   end;
   WriteLn('end.'); readln;
end.
Ja, ich habe unter Start->Parameter den Punkt "Mit Systemvariablen" angekreuzt.

Beide Konsolen haben die exakt gleiche Umgebungsvariable PATH : Der Befehl ECHO %PATH% ergibt das gleiche.

Es wird noch viel gruseliger:
Im "normalen" Fenster:
Code:
C:\ > where telnet
c:\windows\system32\telnet.exe
Im durch Delphi gestarteten Fenster:
Code:
C:\Windows\System32>where telnet
INFORMATION: Es konnten keine Dateien mit dem angegebenen
Muster gefunden werden.

Wem es jetzt noch nicht spooky genug war: Lasst uns doch mal ins Verzeichnis c:\Windows\system32 gehen und das Verzeichnis auflisten:

Normal:
Code:
C:\Windows\System32>dir tel*
 Volume in Laufwerk C: hat keine Bezeichnung.
 Volumeseriennummer: D478-6648

 Verzeichnis von C:\Windows\System32

16.07.2016  12:42           109.056 telephon.cpl
16.07.2016  12:42            88.576 TelephonyInteractiveUser.dll
16.07.2016  12:42             2.560 TelephonyInteractiveUserRes.dll
09.08.2016  09:44           129.024 telnet.exe
               4 Datei(en),       329.216 Bytes
               0 Verzeichnis(se), 13.714.972.672 Bytes frei

C:\Windows\System32>
Im "Delphi"-Fenster:
Code:
C:\Windows\System32>dir *tel*
 Volume in Laufwerk C: hat keine Bezeichnung.
 Volumeseriennummer: D478-6648

 Verzeichnis von C:\Windows\System32

16.07.2016  12:43            22.528 appidtel.exe
16.07.2016  12:42            27.648 BthTelemetry.dll
03.05.2016  22:30           299.488 IntelCpHeciSvc.exe
03.05.2016  22:30           304.136 IntelOpenCL32.dll
03.05.2016  22:30            77.832 Intel_OpenCL_ICD32.dll
16.07.2016  12:42             7.168 KBDINTEL.DLL
16.07.2016  12:43           107.520 telephon.cpl
               7 Datei(en),       846.320 Bytes
               0 Verzeichnis(se), 13.705.940.992 Bytes frei
Ich bin völlig verwirrt. Wie kann das sein?
  Mit Zitat antworten Zitat