Ubuntu 데스크탑에서 Windows의 응용 프로그램을 시작하십시오. 체제에서 호출됩니다. 내 목표는 게스트 OS의 응용 프로그램에

우분투에서 다음을 수행하는 쉘 스크립트를 작성하고 싶습니다.

  1. Virtualbox에서 Windows 7 게스트 OS가 아직 실행되고 있지 않은 경우 부팅합니다.

  2. Windows에서 쉘 스크립트를 실행하십시오. 여기서 쉘 스크립트는 Ubuntu 호스트 운영 체제에서 호출됩니다.

내 목표는 게스트 OS의 응용 프로그램에 대한 Ubuntu 호스트 데스크톱에서 응용 프로그램 시작 관리자를 만드는 것입니다. 예를 들어, Windows에서 Visual Studio를 시작하는 Ubuntu 데스크톱에서 Visual Studio의 바로 가기를 만들 수 있습니다. 나는 항상 응용 프로그램 바로 가기를 클릭하기 전에 Windows가 시작되기를 기다리는 대신 Ubuntu 데스크탑에서 직접 Windows 응용 프로그램을 시작할 수 있기를 원했습니다.



답변

Windows 게스트에는 약간의 제한이 있지만 시작 관리자에 넣을 수있는 스크립트에서 게스트 모드를 심리스 모드로 실행하려면 다음 절차를 테스트했습니다.

  • VirtualBox Manager 시작
  • 사용자 및 비밀번호를 사용하여 창에 로그인
  • 심리스 모드로 전환 Host+L
  • 심리스 모드에서 머신 상태 저장

이제 다음 명령을 사용하여 가상 머신을 완전히 제어 할 수 있습니다.

  • 완벽한 저장 상태에서 가상 머신 시작

    VBoxManage startvm "<Name_of_VM>"

    또는 (Qt 프론트 엔드의 경우)

    VirtualBox --startvm "<Name_of_VM>"
  • VM에서 응용 프로그램 실행

    VBoxManage --nologo guestcontrol "<Name_of_VM>" run --exe "C:\\full\\path\\to\\program.exe" --username windowsuser --password password --wait-stdout
  • 저장 상태에서 VM 종료

    VBoxManage controlvm "Name_of_VM" savestate

Ubuntu 데스크탑에서 완벽한 Windows 응용 프로그램 창을 즐기려면이를 스크립트에 넣으십시오.

암호없는 Windows 로그온을 설정 한 경우 작동하지 않습니다. 제한 사항 및 Windows가 작동하도록 구성하는 방법 은 가상 상자 설명서 를 참조하십시오 .

또한 비밀번호가 없거나 비어있는 계정을 사용하려면 게스트의 그룹 정책을 변경해야합니다. 이렇게하려면 gpedit.msc 를 입력하여 명령 행에서 그룹 정책 편집기를 열고 키를 열고 Computer Configuration\Windows Settings\Security Settings\Local Policies\Security OptionsAccounts: Limit local account use of blank passwords to console logon only을 Disabled로 변경하십시오 .

, 윈도우 홈 에디션과 같은 그룹 정책 편집기 (gpedit.msc를)하지 않고 운영 체제 레지스트리 키에서 DWORD를 만드는 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\limitblankpassworduse과에 따라, 동일한 효과를 달성 할 0으로 설정 이 답변 .


답변

이것은 답변보다 더 힌트이지만 의견에 비해 너무 큽니다.

아마 이것을 봐야 합니다 . 문서에 따르면이 명령은 호스트 OS에서 실행됩니다 (우분투 호스트와 Windows 게스트를 가정합니다).

VBoxManage guestcontrol "Windows XP Pro" execute --image "cmd.exe" --username javier --verbose "/c" "regedit.exe"

Windows (게스트)에서 regedit를 열어야하지만 결코 작동시키지 못했습니다.

당신은 또한 사용할 수 있습니다

VBoxManage showvminfo "Windows XP Pro" | grep State

VM이 실행 중인지 확인합니다.


답변

Linux가 아직 실행 중이 아닌 경우 VM의 Windows 파티션에 액세스 할 수 없기 때문에 작동하지 않는다는 것을 깨달았을 때 원래 아이디어를 삭제했습니다. 더 복잡한 방법이있을 수 있지만 실제로 가치가 있는지는 모르겠습니다.

공통 공유 디렉토리를 갖는 것이 가능할 수 있으며 Windows의 스크립트는 항상이 디렉토리가 비어 있는지 확인합니다. 그렇지 않은 경우 디렉토리에서 스크립트를 실행하며 VM을 실행하기 전에 Ubuntu 시스템에서 스크립트를 실행합니다.

다음에 실행되지 않도록 첫 번째 스크립트를 삭제하는 두 번째 스크립트가있을 수 있습니다.


답변

나는 똑같은 것을 원했고 guestcontrol을 사용하지 않고 해결했습니다. 내 MacOS X 호스트에는 Win7을 실행하는 내 vbox 클라이언트가 Z :로 매핑 한 폴더 (Windows)가 있습니다. 더미 파일을 사용하여 다음과 같이 호스트와 클라이언트 간 통신합니다.

Mac 호스트에서 :-Win-client에서 시작하려는 각 Windows 응용 프로그램에 대한 아이콘이 포함 된 하나의 쉘 스크립트를 작성했습니다. 기본적으로 VirtualBox가 시작되지 않았는지 확인한 다음 시작 후 Windows가 읽을 수있는 공유 폴더에 “이 특정 응용 프로그램 시작”파일을 만듭니다. 이러한 스크립트의 예는 다음과 같습니다.

#!/bin/bash

# bail if vbox is already started/running windoze...
ps ax | grep -v grep | grep 'Windows 7' > /dev/null
if [ $? -eq 0 ]; then
  echo "Sorry, Windows is already running."
  exit 0
fi

# send a message to Windoze which program to start...
touch /Users/urban/Documents/Windows/START_TS2000I.TXT

# startup Windoze in seamless mode
vboxmanage setextradata 'Windows 7' GUI/Seamless on
vboxmanage startvm 'Windows 7' &

exit 0

그런 다음 Windows 클라이언트에서 시작 폴더에 다음과 같은 일치하는 스크립트 (BAT 파일)가 있습니다.

@echo off
pushd "C:\Program Files\Omega Research\Program"
if exist Z:\start_ts2000i.txt start ORTrade.exe
if exist Z:\start_ts2000i.txt del Z:\start_ts2000i.txt
.
.
.
exit 0

이렇게하면 Mac에 새 클라이언트 시작 아이콘을 추가 할 때마다 쉘 스크립트를 복사하고 새 더미 파일을 발명 한 다음 클라이언트의 BAT 스크립트에 일치하는 시작 줄을 추가합니다. 잘 작동하며 이전 게시물의 Martys 아이디어와 일치한다고 생각합니다.