![]() |
Verrücktes Verhalten wenn cmd.exe von ShellExecute(..) gestartet wird
Ich bin verwirrt.
Hier einmal etas ganz normales:
Hier etwas komisches:
Hier der Code:
Delphi-Quellcode:
Ja, ich habe unter Start->Parameter den Punkt "Mit Systemvariablen" angekreuzt.
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. Beide Konsolen haben die exakt gleiche Umgebungsvariable
Delphi-Quellcode:
: Der Befehl
PATH
Delphi-Quellcode:
ergibt das gleiche.
ECHO %PATH%
Es wird noch viel gruseliger: Im "normalen" Fenster:
Code:
Im durch Delphi gestarteten Fenster:
C:\ > where telnet
c:\windows\system32\telnet.exe
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:
Im "Delphi"-Fenster:
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>
Code:
Ich bin völlig verwirrt. Wie kann das sein?
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 |
AW: Verrücktes Verhalten wenn cmd.exe von ShellExecute(..) gestartet wird
Ich denke, dass Du hier gerade von der Verzeichnis-Virtualisierung abgewatscht wirst. System32 ist offenbar in einem Fall 64bittig, in andern Fall 32bittig. Warum Telnet nur in einer Variante vorliegt, wäre zu klären.
Schaue doch mal im Task-Manager, ob CMD.exe als 64- oder 32-Bit ausgeführt wird. |
AW: Verrücktes Verhalten wenn cmd.exe von ShellExecute(..) gestartet wird
Genau das ist es, natürlich!
Danke! :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:12 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