Ist es möglich, ein Programm im Windows XP-Modus direkt aus einer Batchdatei aus Windows 7 auszuführen?

1072
Teo Zec

Ich habe Windows 7 Ultimate mit Windows XP Mode installiert.

In meinem Host-Betriebssystem (Windows 7) habe ich eine Batch-Datei, die einige Befehle ausführt. Ich muss auch drei Programme ausführen, die in meinem Windows XP-Modus installiert sind (Windows debug.exe und zwei andere Programme). Gibt es eine Möglichkeit, sie direkt von meiner Batchdatei aus auszuführen?

Vielen Dank!

1
Von CMD aus können Sie eine Desktop-Verknüpfung / einen Programm-Link im Ordner `C: \ Users` starten, obwohl` start / wait` nicht wartet. AFH vor 9 Jahren 0
@AFH Welchen Befehl muss ich verwenden? Teo Zec vor 9 Jahren 0
Sie können den Link wie jede `exe'-Datei aufrufen, z. B.` C: \ Benutzer \ Benutzername \ Desktop \ DeskTopName.lnk`. Sie können Parameter übergeben, vorausgesetzt, Sie haben sie in der Verbindungsausführungszeichenfolge zugelassen. Sie können `start` verwenden, aber die Option` / wait` wartet, bis das Programm über die Verknüpfung geplant wurde, nicht bis das Zielprogramm beendet ist. AFH vor 9 Jahren 0
Ich habe keinen XP-Modus zum Testen, aber Sie können in Windows 7 keine Aufgabe mit dem Ausführen des XP-Programms verknüpfen und die Aufgabe so einstellen, dass sie im Kompatibilitätsmodus ausgeführt wird, und dann die Aufgabe in Ihre Batchdatei stellen? fixer1234 vor 9 Jahren 0
@AFH Ja, aber ich kann einen Link aus dem XP-Modus nicht auf meinen Windows 7-PC kopieren, da die Lnk-Datei auf eine Datei verweist, die auf meinem Windows 7-C-Laufwerk nicht vorhanden ist Teo Zec vor 9 Jahren 0
@ fixer1234 Das Programm ist im Windows XP-Modus installiert, und ich weiß nicht, wie Sie eine Task einrichten, um es vom Host-Betriebssystem aus auszuführen. Teo Zec vor 9 Jahren 0
Diese Technik wird als Problemumgehung für Programme verwendet, die eine UAC-Autorisierung erfordern. Es gibt viele nützliche Links, wenn Sie unter Windows, Task und UAC suchen. Hier ist einer: http://www.7tutorials.com/use-task-scheduler-launch-Programmeohne-uac-prompts. Ich habe momentan keinen Zugriff auf Windows, aber eine der Einstellungen besteht darin, die Task im Kompatibilitätsmodus auszuführen. (Sie benötigen wahrscheinlich nicht die Einstellung Als Administrator ausführen.) fixer1234 vor 9 Jahren 0
@ fixer1234 Danke für den Vorschlag, aber eigentlich muss ich kein Programm ohne UAC ausführen. Ich muss ein 16-Bit-Programm ausführen, das nicht unter Windows 7 64-Bit ausgeführt werden kann, jedoch im Windows XP-Modus. Teo Zec vor 9 Jahren 0
Richtig, der UAC-Zweck ist nur eine Anwendung der Technik. Durch das Definieren einer Aufgabe können Sie ein Programm mit anderen Merkmalen ausführen. Sie können einen Task so einstellen, dass er im Kompatibilitätsmodus ausgeführt wird. Dies ist im XP-Modus nicht möglich. fixer1234 vor 9 Jahren 0
Wenn Sie einen Link auf Ihren Desktop oder Ihr Startmenü (oder irgendwo anders) legen, legen Sie den Kompatibilitätsmodus für XP in den Linkeigenschaften fest. Ich habe davon ausgegangen, dass Sie es getan haben. AFH vor 9 Jahren 0
@AFH Ich muss nicht im Kompatibilitätsmodus laufen, sondern im Windows XP-Modus. Weitere Informationen hierzu finden Sie hier: http://windows.microsoft.com/en-us/windows7/products/features/windows-xp-mode Teo Zec vor 9 Jahren 0
OK, aber wenn Sie es aus einer Batch-Datei zusammen mit nativen W7-Programmen aufrufen möchten, sehe ich nicht, wie Sie dies ohne den Kompatibilitätsmodus tun können. Wenn Sie Programme in einer VM aufrufen möchten, müssen Sie die Ausführung über Befehls- / Flag-Dateien in einem gemeinsam genutzten Verzeichnis steuern. AFH vor 9 Jahren 0
@AFH Das will ich. Ich muss etwas mit meiner Datei unter Windows 7 machen und dann einige andere Dinge mit einigen Programmen ausführen, die sich im Windows XP-Modus befinden. Ist es möglich? Oder muss ich eine Stapeldatei jedes Mal manuell in meinem Windows XP-Modus aufrufen? Teo Zec vor 9 Jahren 0

1 Antwort auf die Frage

2
AFH

Ein billiger und fröhlicher Ansatz, um dies zu erreichen, ist über ein gemeinsam genutztes Verzeichnis (das wahrscheinlich unterschiedliche Pfade in XP und W7 hat, obwohl Sie für die Freigabe einen Laufwerksbuchstaben verwenden können, der auf beiden Systemen gleich ist). Sie können einfach die Anwesenheit von Befehls- und Antwortdateien verwenden, um die Ausführung auf jedem System zu synchronisieren.

Unter XP haben Sie eine Befehlsshell, die ständig mit der Kernschleife läuft: -

:Loop sleep 10 if not exist \XPcommand.cmd goto Loop del \XPresponse.txt call \XPcommand.cmd > \XPcommand.txt ren \XPcommand.txt XPresponse.txt del \XPcommand.cmd goto Loop 

Sie können die Protokollierung hinzufügen und das Skript anderweitig verfeinern. Nach dem callBefehl können Sie dies hinzufügen echo Completion status = %errorlevel% >> \XPcommand.txtund in die Nachanalyse aufnehmen.

Wenn Sie einen XP-Befehl von W7 aus ausführen möchten, rufen Sie ein cmdSkript mit dem übergebenen Befehl in den Parametern auf und enthalten: -

del \XPresponse.txt echo %* > \XPcommand.cmd :Loop sleep 2 if exist \XPcommand.cmd goto Loop 

Wenn Sie von hier aus zurückkehren, können Sie XPresponse.txtjede Nachbearbeitung analysieren und durchführen. Es ist nicht unbedingt notwendig zu löschen XPresponse.txt, aber es stellt nur sicher, dass keine vorherigen Antworten W7-Überprüfungen verwechseln können.

Es gibt unzählige Versionen von sleep.exe, die für einige Sekunden ausgesetzt werden, darunter zwei von MS, in Services für Unix und in Windows Resource Kit . Die Anzahl der Sekunden, die Sie wählen müssen, ist ein ausgewogenes Verhältnis zwischen Reaktionsschnelligkeit und Polling-Aufwand. Ich habe für W7 ein kürzeres Intervall vorgeschlagen, da die Abfrage nur ausgeführt wird, während der XP-Befehl ausgeführt wird, während unter XP alle anderen Zeiten ausgeführt werden.