INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

System Exec



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

15.05.2025, 15:25
Beitrag #1

Hubert R. Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 197
Registriert seit: Jul 2011

2019 64bit
2011
DE


Deutschland
System Exec
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 ausgefhrt werden: Das System kann die
angegebene Datei nicht finden.

Wenn ich aber das gleiche Script mit lv18_img SP2 (64bit) ausführe läuft das script ohne Probleme.

Als Betriebssystem habe ich verwende Win10

Hat wer eine Erklärung dafür?

Gruß Hubert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
16.05.2025, 11:53
Beitrag #2

cordm Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Jul 2022

2020, 2024
2016
EN


Deutschland
RE: System Exec
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/KnowledgeArticl...0019L4VSAU

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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.05.2025, 13:32
Beitrag #3

Hubert R. Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 197
Registriert seit: Jul 2011

2019 64bit
2011
DE


Deutschland
RE: System Exec
Hallo Cordm,

danke für dein feedback. Ich habe heute morgen einiges ausprobiert aber nichts klappt.

Vielleicht kann du nochmals dir das Vi (lv18_img-32bit) ansehen ob ich denkfehler mache oder das exec Vi falsch bediene.

Gruß Hubert


Angehängte Datei(en)
18.0 .vi  wintest-lv18-32bit.vi (Größe: 20,65 KB / Downloads: 29)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.05.2025, 15:47
Beitrag #4

cordm Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Jul 2022

2020, 2024
2016
EN


Deutschland
RE: System Exec

Akzeptierte Lösung

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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.05.2025, 11:52
Beitrag #5

Hubert R. Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 197
Registriert seit: Jul 2011

2019 64bit
2011
DE


Deutschland
RE: System Exec
Hallo cordm,

Wenn ich es so in lv18_img ausführe bekomme ich die LV-Fehlermeldung 2 „Memory is full…“

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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.05.2025, 21:31
Beitrag #6

Martin.Henz Offline
LVF-Team
LVF-Team

Beiträge: 441
Registriert seit: Jan 2005

2.5.1 bis 20
1992
kA

74363
Deutschland
RE: System Exec

Akzeptierte Lösung

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
18.0 .vi  SystemExecuteWithDisabledRedirection.vi (Größe: 11,36 KB / Downloads: 24)


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.

Martin Henz
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
18.05.2025, 11:52
Beitrag #7

Hubert R. Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 197
Registriert seit: Jul 2011

2019 64bit
2011
DE


Deutschland
RE: System Exec
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.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Mehrere Befehle über System Exec VI creo_123 9 7.838 04.05.2017 06:03
Letzter Beitrag: creo_123
  NI System API RT and NI System API Windows 32 bit, helm 1 3.821 11.12.2015 13:30
Letzter Beitrag: GerdW
  System exec.vi mehrmals beschreiben MioStarkid 3 4.423 06.02.2014 10:03
Letzter Beitrag: GerdW
  System Exec - was in der normalen Console funktioniert, geht mit der LV vi nicht MartinLoreck 16 14.406 12.10.2012 11:30
Letzter Beitrag: SeBa
  System Exec.vi yasukatakaya 2 5.517 02.02.2010 18:52
Letzter Beitrag: IchSelbst
  System Exec.vi (wait until completion - probelm) p.p 5 6.503 08.06.2009 19:44
Letzter Beitrag: ImExPorty

Gehe zu: