73234
Goto Top

Starten von 64bit .msc -Dateien aus einem 32bit Prozess

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.

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

Nun will ich 'printmanagement.msc' starten
- aus Ausführen - 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?

Danke für Eure Tipps
Kommentar vom Moderator colinardo am 01.03.2022 um 16:23:55 Uhr
Titel etwas präzisiert.

Content-ID: 2033235701

Url: https://administrator.de/forum/starten-von-64bit-msc-dateien-aus-einem-32bit-prozess-2033235701.html

Ausgedruckt am: 25.03.2025 um 04:03 Uhr

1915348599
1915348599 01.03.2022 aktualisiert um 11:17:36 Uhr
Goto Top
Welche von den vielen in C:\ hinterlegten *.msc Dateien wird denn eigentlich gestartet?
Keine, msc-Dateien sind selbst nicht startfähig, das sind reine Konfigurationsdateien für die MMC. Für den Start verantwortlich ist die mmc.exe welcher die Konfigurationsdateien als Parameter übergeben werden.

screenshot

Wenn du also MSC-Dateien starten willst solltest du diese am besten gleich mit vollem Pfad an die MMC übergeben und so starten, auf die Dateizuordnung würde ich mich nicht verlassen.
Warum funktioniert das beim 'Ausführen' -Dialog?
Ohne jeglichen Code kann man hier nur raten was du gemacht hast.
SlainteMhath
SlainteMhath 01.03.2022 um 12:26:33 Uhr
Goto Top
Moin,

Delphi ist ja nicht unbedingt taufrisch.... kann das denn mit Dateinamen >8+3 Zeichem umgehen?

lg,
Slainte
73234
73234 01.03.2022 um 12:29:38 Uhr
Goto Top
@1915348599, vielen Dank,

ja, soweit ist mir das schon klar...

Unter Win10/64 funktioniert nur diese 'printmanagement.msc' nicht aus meinem Programm, alle anderen *.msc jedoch sauber.

Aber, gerade getestet:

Unter Win7/64 funktioniert auch diese 'printmanagement.msc' aus meinem Programm.

Warum funktioniert das beim 'Ausführen' -Dialog? Ich meine das Ausführen vom Start.

... Hmmm???
1915348599
1915348599 01.03.2022 aktualisiert um 12:34:05 Uhr
Goto Top
Warum funktioniert das beim 'Ausführen' -Dialog? Ich meine das Ausführen vom Start.
Das funktioniert so lange system32 im Path steht und die Verknüpfung mit der MMC in der Registry korrekt ist. Das ist per default der Fall also normal.

Dein Code liegt uns wie schon gesagt leider nicht vor ... Meine Glaskugel ist leider in Revision.

Elevated / unelevated?
73234
Lösung 73234 01.03.2022 aktualisiert um 12:35:52 Uhr
Goto Top
@all, bitte Delphi und meine Programmierung jetzt mal nicht hinterfragen, das klappt dort alles zu meiner Zufriedenheit. Die Fehlermeldung ist meine eigene nach Programmaufruf...

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 ander *.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!

OK
1915348599
1915348599 01.03.2022 aktualisiert um 12:45:06 Uhr
Goto Top
@all, bitte Delphi und meine Programmierung jetzt mal nicht hinterfragen,
Ah ja, na dann weist du dir ja selbst zu helfen ...
das klappt dort alles zu meiner Zufriedenheit.
Na dann, wer schon hat der hat ... Schon wieder früh Freitag ... 🐟
73234
73234 01.03.2022 um 12:52:27 Uhr
Goto Top
Zitat von @1915348599:

@all, bitte Delphi und meine Programmierung jetzt mal nicht hinterfragen,
Ah ja, na dann weist du dir ja selbst zu helfen ...
das klappt dort alles zu meiner Zufriedenheit.
Na dann, wer schon hat der hat ... Schon wieder früh Freitag ... 🐟

Na, dazu sag ich jetzt nichts, lesen hilft manchmal, Inhalte oder auch Unterschiede erkennen, und vieles mehr...

Aber bleib auf'n Teppich !
1915348599
1915348599 01.03.2022 aktualisiert um 13:01:47 Uhr
Goto Top
Du findest also die Fehlermeldungen "funktioniert", und "funktioniert nicht" sind in einem Admin-Forum qualifizierte Aussagen?? face-big-smile 🙈 .
Wenn du deine Fehlermeldungen schon selber schreibst ... musst du ja eigentlich selbst wissen wo das Problem liegt.

Wer keine Hilfe will, der hat eben Pech gehabt.
Aber bleib auf'n Teppich !
Damit fliegt meine Gattin gerade durch die Gegend!
Doskias
Doskias 01.03.2022 um 14:05:29 Uhr
Goto Top
Moin,

interessant wie Leute immer Hilfe suchen, aber nicht bereit sind Informationen zu liefern. Daher einfach stumpft ohne infos weiter:

- Hast du mal ein anderen Windows 10 Rechner probiert?
- Hast du mal einen neu instillierten Windows 10 Rechner probiert?
- Gibt es denn die printmanagement.msc unter C:\Windows\System32 bzw. unter C:\Windows\System32\de-de bzw. unter dem Pfad, der dir angezeigt wird, wenn du im Startmenü printmanagement.msc ausführen möchtest?

Gruß
Doskias
73234
Lösung 73234 01.03.2022 um 14:50:28 Uhr
Goto Top
Hallo,

Zitat von @Doskias:
Gibt es denn die printmanagement.msc unter C:\Windows\System32 bzw. unter C:\Windows\System32\de-de bzw. >unter dem Pfad, der dir angezeigt wird, wenn du im Startmenü printmanagement.msc ausführen möchtest?
Doskias

in meinem Startpost steht doch alles drin:

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


Übersetzung:
- Win10 Ausführen Dialog 'printmanagement.msc' eingetippt - Enter/Return betätigt -->
d
- 'printmanagement.msc' in meinem Programm hinterlegt -
d1
und "Pfad nicht gefunden", ich werte hier das Handle von Shellexecute aus.

Meine Gegenprobe:
'certmgr.msc' öffnet sich immer.

Hier Speicherorte für 'printmanagement.msc'
 Verzeichnis von C:\Windows\System32
15.10.2019  14:53           146.389 printmanagement.msc
               1 Datei(en),        146.389 Bytes
 Verzeichnis von C:\Windows\System32\de-DE
07.12.2019  04:59           146.389 printmanagement.msc
               1 Datei(en),        146.389 Bytes
 Verzeichnis von C:\Windows\WinSxS\amd64_microsoft-windows-p..erandprintui-pmcppc_31bf3856ad364e35_10.0.19041.1_none_c1594f70200f2c03
15.10.2019  14:53           146.389 printmanagement.msc
               1 Datei(en),        146.389 Bytes
 Verzeichnis von C:\Windows\WinSxS\amd64_microsoft-windows-p..ui-pmcppc.resources_31bf3856ad364e35_10.0.19041.1_de-de_5daec1cb7620c243
07.12.2019  04:59           146.389 printmanagement.msc
               1 Datei(en),        146.389 Bytes

Muss man hier denn alles mit Bildern hinterlegen?
Ursache und Wirkung habe ich dargelegt...
... die Frage habe ich gestellt.

konzentriertes Lesen hilft aber auch beim verstehen des Problems.

Und ... der Ton macht die Musik
1915348599
1915348599 01.03.2022 aktualisiert um 15:17:30 Uhr
Goto Top
Zitat von @73234:
Muss man hier denn alles mit Bildern hinterlegen?
Nö, hat niemand behauptet, wir wollen lieber harte Fakten, ergo "Code" sehen .

Ursache und Wirkung habe ich dargelegt...
... die Frage habe ich gestellt.

konzentriertes Lesen hilft aber auch beim verstehen des Problems.
Das ist ja nicht das Problem, das eigentliche Problem von uns hier ist, dass du uns essentielle Informationen (namentlich dein Code für den Aufruf der mmc) vorenthältst! Warum auch immer?? Ist der so schlecht das du dich dafür schämst den hier in Auszügen zu veröffentlichen das man dir auch helfen kann?
Oder bist du so über zeugt von dir das du nie Fehler machst?
Wenn man hier von unserer Seite in deinem Code Fehler ausschließen könnte dann kann man ja weiter sehen, aber so hat das ehrlich gesagt keinen Sinn hier weiter zu machen, wenn der Fehler evt. schon in deinem Code steckt. Zumindest mal alle Parameter für ShellExecute im Klartext wäre ja schon mal ein Anfang!
Und ... der Ton macht die Musik
Ohne Instrumente, keine Musik...
Doskias
Doskias 01.03.2022 um 15:14:44 Uhr
Goto Top
Japp der Ton macht die Musik. Solltest du nicht nur schreiben, sondern dich auch daran halten.

Ich erklär dir gerne den Hintergrund meiner Frage, obwohl du ja angeblich schon alles geschrieben hast.
Ich beschränke mich der einfachhalber auf folgende drei Startmöglichkeiten der Druckerverwaltung:

1. Du drückst die Windowstaste und gibst printmanagement.msc ein. Startest von dort
2. Du gibst unter ausführen printmanagement.msc ein
3. Du öffnest eine CMD und gibst dort printmanagement.msc ein.

Alle drei Optionen starten im Endeffekt die MMC, aber jede nutzt einen anderen Weg. Im Endeffekt bedeutet es, wenn es über ausführen funktioniert, dann muss es nicht via CMD funktionieren.
SlainteMhath
SlainteMhath 01.03.2022 um 15:51:53 Uhr
Goto Top
Ich nehme an einen absoluten PFad beim Aufruf zu verwenden ist keine Option, oder?
colinardo
Lösung colinardo 01.03.2022 aktualisiert um 16:27:59 Uhr
Goto Top
Servus @73234 .
Also, da du hier eine 32bit Applikation geschrieben hast und unter Windows 10/11 in der 64bit Ausgabe wie auch bei anderen 64bit Windows Versionen eine sogenannte Filesystem-Redirection stattfindet wird der Zugriff auf "C:\Windows\system32" automatisch auf "C:\Windows\SysWow64" umgeleitet und dort liegt im Gegensatz zu Windows 7 keine 32bit Version der "printmanagment.msc" mehr in aktuellen Betriebssystemen, deswegen kann dein Programm das MMC-Plugin auch nicht öffnen bzw. findet die Datei auch nicht.
Da WIN+R also "Ausführen" im Startmenü bereits in einem 64bit-Prozess läuft findet auch keine Redirection statt und es wird die native "printmanagement.msc" direkt im nativen "system32" Verzeichnis gefunden und in einer 64bit MMC gestartet

Möchte man aus 32bit-Applikationen trotz der Redirection auf das 64bit "System32" Verzeichnis zugreifen macht man das über den Pfad "C:\Windows\Sysnative" mittels Umweg einer 64bit cmd

C:\windows\sysnative\cmd.exe /c mmc printmanagement.msc
Oder alternativ über das temporäre Abschalten der Filesystem Redirection für den Prozess via Wow64DisableWow64FsRedirection (kernel32) und wieder anschalten mittels Wow64RevertWow64FsRedirection (kernel32).

Etwas Lesefutter zum Thema:


Grüße Uwe
73234
73234 01.03.2022 um 22:15:18 Uhr
Goto Top
Vielen Dank @colinardo,

das war des Pudels Kern. Ich kannte diesen Aspekt noch nicht, man lernt immer dazu :>)

Da mein Programm auch einzelene Optionen verarbeiten kann funktionierte:
C:\windows\sysnative\cmd.exe /c printmanagement.msc dann dort auch sofort.

In Delphiforum meiner Wahl hat dort auch ein User eine Lösung mit gleichem Inhalt angeboten.

Da kann ich mit meiner Fragestellung ja doch nicht so daneben gelegen haben, denn die Lösung lag im Betriebssystem...

Grüße Minion