![]() |
System Exec - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: System Exec (/Thread-System-Exec) |
System Exec - Hubert R. - 15.05.2025 15:25 Hallo zusammen, ich habe hier ein Problem das ich nicht richtig verstehe. Ich möchte dieses Script mit der Funktion System Exec unter LV18SP2 (32bit) ausführen. powershell -command "Start-Process 'c:\windows\system32\wintest.bat' -Verb runAs Da kann ich machen was ich will das klappt nicht. Ich bekomme die Fehlermeldung das die wintest.bat nicht gefunden wird. Start-Process : Dieser Befehl kann aufgrund des folgenden Fehlers nicht ausgefhrt werden: Das System kann die angegebene Datei nicht finden. Wenn ich aber das gleiche Script mit ![]() Als Betriebssystem habe ich verwende Win10 Hat wer eine Erklärung dafür? Gruß Hubert RE: System Exec - cordm - 16.05.2025 11:53 Das Problem ist, dass Windows 32 bit Anwendungen automatisch nach SysWOW64 umleitet, wenn sie etwas in system32 aufrufen wollen. NI hat einen Knowledgebase Artikel dazu: https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000019L4VSAU Siehe auch Wikipedia dazu: https://de.wikipedia.org/wiki/WOW64 Schlussendlich musst du aus der 32 bit Anwendung heraus den Ordner sysnative statt system32 im Pfad benutzen. RE: System Exec - Hubert R. - 16.05.2025 13:32 Hallo Cordm, danke für dein feedback. Ich habe heute morgen einiges ausprobiert aber nichts klappt. Vielleicht kann du nochmals dir das Vi ( ![]() Gruß Hubert RE: System Exec - cordm - 16.05.2025 15:47 Ich glaube das Problem ist, dass das falsche cmd.exe aufgerufen wird. Ganz verstanden habe ich es aber noch nicht. Mit diesem Kommando funktioniert es bei mir: C:\Windows\Sysnative\cmd.exe /c winsat.exe mem RE: System Exec - Hubert R. - 17.05.2025 11:52 Hallo cordm, Wenn ich es so in ![]() Wenn man LV installiert wird gewöhnlicherweise auf dem Desktop das Icon mit dem LV-Symbol und Version angezeigt. Wenn ich nun einen rechts click drauf mache kann ich unter Eigenschaften – erweitert- als Admin ausführen auswählen. Wenn ich dann das Vi mit deinem Kommando laufen lasse funktioniert es auch. Ich werde von diesem Vi mal eine Exe machen und diese als admin starten, mal schauen was dann passiert. Soweit erstmal vielen Dank an dich. Gruß Hubert RE: System Exec - Martin.Henz - 17.05.2025 21:31 Hallo Hubert, das mit der Umleitung der Verzeichnisse kann manchmal etwas schwierig sein, weil oft nicht klar ist, was im Hintergrund wirklich passiert. Beispiel: Während cmd /c %windir%\Sysnative\msg.exe /server:localhost * test funktioniert, geht der Befehl cmd /c %windir%\Sysnative\osk.exe nicht. Das "cmd /c" welches du vorangestellt hast, macht die Sache nicht einfacher. Letztendlich geht es aber oft erst mal darum, den Befehl richtig auszuführen und ggf. dessen Antwort korrekt auszuwerten. Nun gibt es auch noch eine andere Lösung als das Sysnative. Microsoft rät zwar davon ab, weil es die Umleitung für den Thread außer Kraft setzt. Das sollte zumindest nicht für Befehle verwendet werden, die eine längere Laufzeit haben und insbesondere dann nicht, wenn du parallel dazu etwas aus SysWOW64 ausführen möchtest. siehe [attachment=62906] Link von MS zu den API Funktionen Damit funktioniert cmd /c "c:\windows\System32\winsat.exe mem" oder besser c:\windows\System32\winsat.exe mem und genauso problemlos funktionieren Aufrufe von osk.exe und msg.exe und alle möglichen andere Programme. Um eine Aufruf mit Sysnative kannst du dich ggf. später kümmern, wenn du sicher bist, dass der Aufruf keine anderen grundsätzlichen Fehler mehr enthält. RE: System Exec - Hubert R. - 18.05.2025 11:52 Hallo cordm, nachdem ich mal ein ausführbares Programm erstellt habe muss ich folgendes feststellen. Beim Ausführen der exe öffnen sich 2 Konsolen (s. Bild) das Kommando wird scheinbar ausgeführt aber ich bekomme kein Ergebnis (standard output) angezeigt. Es gibt scheinbar keinen Unterschied ob ich die .exe als Admin ausführe oder nicht. Auch die Vergabe von entsprechenden Rechten für die .exe hat keinen Erfolg gebracht. Ich muss aber sagen in der LabVIEW Entwicklungsumgebung als Admin gestartet hat es funktioniert. Hallo Martin, Dein sys… .vi habe ich auch ausprobiert. In der Labview Entwicklungsumgebung als Admin gestartet funktionieren beide Aufrufe also cmd /c "c:\windows\System32\winsat.exe mem" und c:\windows\System32\winsat.exe mem. Wenn ich nun ein ausführbares Programm (exe als admin gestartet) verwende funktioniert dieser Aufruf nicht: cmd /c "c:\windows\System32\winsat.exe mem". Ich bekomme wie bei cordm kein Ergebnis zurück. Wenn ich noch eine Umleitung (> C:\Users\Public\.....) an den Aufruf hänge wird das File angelegt ist aber leer. Aber der zweite Aufruf (exe als admin gestartet) c:\windows\System32\winsat.exe mem verwende Funktioniert alles. Das hat mich sehr gefreut! Vielleicht helfen die beiden unterschiedlichen Ansätzen jemand ich der Zukunft weiter. Nochmals vielen Dank an euch beide. |