데스크톱 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이 시작되지 않는 경우가 있습니다.
인용하다
답변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
(그 중 일부는 내가 빌린 것입니다.이 소스)