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/)
-   -   Starten von MSC-Dateien (https://www.delphipraxis.net/210095-starten-von-msc-dateien.html)

rudi01 1. Mär 2022 12:00

Starten von MSC-Dateien
 
Moin @all,

ich habe ein Programm in Delphi (32bit) geschrieben, dass Programme starten soll und auch kann. Das funktioniert gut.
Aktuelle System Win10 64 bit Delphi XE3

Nun habe ich 'certmgr.msc' gestartet:
- aus Delphiprogramm - funktioniert
- aus Ausführen-Dialog vom Startmenü - funktioniert

Nun will ich 'printmanagement.msc' starten
- aus Ausführen-Dialog - funktioniert
- aus Delphiprogramm - Fehlermeldung 'Datei nicht gefunden'

(Also immer nur Eingabe ohne Pfad)
Auch bei anderen *.msc Dateien funktioniert das gut, wird gefunden.

Warum wird 'printmanagement.msc' nicht gefunden?
Welche von den vielen in C:\ hinterlegten *.msc Dateien wird denn eigentlich gestartet?

C:\Windows\System32
C:\Windows\System32\de-DE
....

Warum funktioniert das beim 'Ausführen' -Dialog?

-------------------------------

Debuggen hilft hier auch überhaupt nicht weiter, denn genau diese Fehlermeldung ist ja der Breakpoint ... den ich zZt.
überhaupt nicht zuordnen kann.

In meinem Programm:

Eine *.msc funktioniert, eine andere *.msc nicht,

Unter Win10/64 funktioniert es nicht, unter Win7/64 jedoch.

Das Problem ist überhaupt nicht lebensnotwendig, doch Ihr kennt das ja bestimmt auch: Man will die Ursache erkennen!

Hat jemand einen Tipp?

Dalai 1. Mär 2022 12:30

AW: Starten von MSC-Dateien
 
Eine Reihe von MMC Snap-ins liegen ausschließlich im %SystemRoot%\system32. 32-bit Programme kommen dort aber (standardmäßig) nicht ran, weil sie von WOW64 umgeleitet werden auf %SystemRoot%\SysWOW64. Mit anderen Worten: Ohne weitere Maßnahmen ist für 32-bit Programme %SystemRoot%\system32 = %SystemRoot%\SysWOW64. Für 64-bit Programme sind diese beiden Verzeichnisse aber nicht identisch.

Um dennoch von einem 32-bit Programm 64-bit Programme zu starten, gibt es zwei Möglichkeiten:
  • den Alias SysNative statt system32 benutzen. Das ist absolut nicht zu empfehlen, zum einen weil hardkodierte Pfade pfui sind und zum anderen weil es dann nicht mehr unter 32-bit Windows funktioniert, und bestimmt gibt's noch mehr Gründe
  • die Umleitung durch WOW64 temporär deaktivieren und danach wieder zu aktivieren: MSDN-Library durchsuchenWow64DisableWow64FsRedirection und MSDN-Library durchsuchenWow64RevertWow64FsRedirection.
    Das Deaktivieren der Umleitung sollte natürlich nur bei 32-bit Programm auf 64-bit Windows erfolgen. Es ist der bevorzugte Weg für solche Fälle.

Grüße
Dalai

rudi01 1. Mär 2022 14:31

AW: Starten von MSC-Dateien
 
Hallo @Dalai,

nun erstmal vielen Dank für die Antwort.
Bin am eigentlichen Rechner, habe es durchdacht und es funzt.

BG Rudi

PS War meine Frage einigermaßen verständlich?


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