
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
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.