VirtualBox를 통해 Linux 호스트의 파일 형식을 Windows 애플리케이션과 연결하는 방법은 무엇입니까?

VirtualBox를 통해 Linux 호스트의 파일 형식을 Windows 애플리케이션과 연결하는 방법은 무엇입니까?

데스크톱 Linux의 파일 형식을 VirtualBox를 통해 실행되는 Windows 7 응용 프로그램과 연결하여 원활하게 작동하고 필요할 때 VirtualBox를 시작하려면 어떻게 해야 합니까?

저는 KDE를 사용하고 있습니다.


현재 접근 방식

(엑셀 파일 예):

시작 메뉴에 "Excel"이라는 새 항목을 추가합니다.

  • 주문하다:/home/USER/bin/excelstarter.sh %f
    • 아래를 참조하세요
  • 시작 피드백이 효과적이지 않아 비활성화되었습니다.

마우스 오른쪽 버튼을 클릭하고 다음 계정으로 실행을 선택하여 .xlsx 파일을 Excel과 연결합니다.

  • 모든 파일 형식에 대한 응용 프로그램 연결을 기억합니다...

VirtualBox에 관련 폴더 마운트

  • VirtualBox 메인 창 > 컴퓨터 설정 > 공유 폴더:

    • 다음에 추가:
      • 폴더 경로:/data
      • 자동 설치
      • 영구적인
    • 다음에 추가:
      • 폴더 경로:/home/USER
      • 자동 설치
      • 영구적인

빈 암호에 대한 그룹 정책 제한 비활성화

이 변경이 없으면 VirtualBox는 암호가 설정되지 않은 경우 명령을 실행하지 않습니다.

  • gpedit.msc 실행
  • 항해

    컴퓨터 구성\Windows 설정\보안 설정\로컬 정책\보안 옵션

  • 변화

    콘솔 로그인에 빈 비밀번호만 사용하도록 로컬 계정을 제한합니다. 도착하다장애가 있는.


excelstarter.sh

여기서 아이디어는 이 파일이 아직 실행되지 않은 경우 VirtualBox를 시작하고 시작될 때까지 기다린 다음 VirtualBox의 해당 설치 세트로 변환된 파일 경로를 사용하여 Excel을 시작하는 역할을 한다는 것입니다.

# Start VM (if it is already started this does nothing)
VBoxManage startvm "win7_hilti"

# Replace folders with windows-local versions (mounts need to be setup)
# /data/ is mounted as F:
original=$1
findWhat=\/data/
replaceWith="F:\\"
fixedFilePath="${original/$findWhat/$replaceWith}"

# /home/USER/ is mounted as G:
original=$fixedFilePath
findWhat=\/home\/USER/
replaceWith="G:\\"
fixedFilePath="${original/$findWhat/$replaceWith}"

# Used for debugging the file paths
#notify-send $fixedFilePath

# Start Excel
# Try to run it until it the machine has started
until VBoxManage guestcontrol "VM-NAME" start --exe "C:\\Program Files\\Microsoft Office\\Office14\\EXCEL.EXE" --username WINDOWSUSER "excel" -- "$fixedFilePath"
do
  # Sleep 1 gave the problem that the mounts were not yet ready, sleep 2 seems to work fine
  sleep 2
done

질문

  • VirtualBox가 이미 백그라운드에서 실행 중이면 포커스를 받지 못합니다.
  • VirtualBox가 시작되기를 기다리는 동안 루프에서 잠을 자지 못합니다. Sleep 1 아직 설치가 설정되지 않은 상태에서 문제가 발생했습니다. 속도가 느린 컴퓨터에서는 이 값을 늘려야 할 수도 있습니다.
  • VirtualBox가 시작된 후 Excel이 시작되지 않는 경우가 있습니다.

인용하다

VBox는 게스트 제어를 관리합니다

비밀번호 없는 사용 활성화 수정

답변1

일부 조정:

-- 애플리케이션 경로를 하드코딩하는 대신 cmd.exe 실행 명령을 사용합니다.

options=( --username WINDOWSUSER --exe "%SystemRoot%\system32\cmd.exe" -- 'cmd' /c start "run this" "$fixedFilePath" ) 여기서 $fixedFilePath는 코드와 동일합니다. $fixedFilePath에 공백이 포함된 경우에도 이러한 옵션은 유효합니다.

이는 스크립트를 일반화합니다. 이제 Excel 파일뿐만 아니라 모든 유형의 파일에서 작동합니다.

$fixedFilePath가 Windows 클라이언트의 프로그램에 대한 전체 경로인 경우에도 작동합니다. %PATH의 프로그램 이름(확장자 포함)이거나 winword와 같은 등록된 프로그램인 경우 이름(확장자 포함)입니다. exe, 엑셀.exe.

그런 다음 stderr에서 VBoxManage guestcontrol이 반환한 문자열을 테스트했습니다.

nError=1
nTries=0

while [ $nError -gt 0 ] && [ $nTries -lt 20 ]; do

   nError=$(VBoxManage guestcontrol win7_hilti start "${options[@]}" 2>&1 >/dev/null | grep -c "error")
   ((++nTries))
   sleep 2

done

(그 중 일부는 내가 빌린 것입니다.이 소스)

관련 정보