उबंटू डेस्कटॉप से ​​विंडोज में एक एप्लिकेशन लॉन्च करें


12

मुझे उबंटू में एक शेल स्क्रिप्ट लिखना चाहिए जो निम्न कार्य करता है:

  1. वर्चुअलबॉक्स में विंडोज 7 अतिथि ओएस को बूट करें, अगर यह पहले से ही नहीं चल रहा है।

  2. विंडोज में शेल स्क्रिप्ट चलाएं, जहां शेल स्क्रिप्ट उबंटू होस्ट ऑपरेटिंग सिस्टम से मंगाई गई है।

मेरा लक्ष्य अतिथि ओएस पर एक आवेदन के लिए उबंटू होस्ट डेस्कटॉप पर एक एप्लिकेशन लॉन्चर बनाना है। उदाहरण के लिए, मैं उबंटू डेस्कटॉप पर विजुअल स्टूडियो के लिए एक शॉर्टकट बना सकता हूं जो विंडोज में विजुअल स्टूडियो लॉन्च करता है। मैं हमेशा से ही चाहता था कि ऐप्पल शॉर्टकट क्लिक करने से पहले विंडोज के शुरू होने के इंतजार के बजाय सीधे उबंटू डेस्कटॉप से ​​विंडोज एप्लिकेशन लॉन्च किया जा सके।

जवाबों:


15

विंडोज मेहमानों से कुछ सीमाएं हैं, लेकिन एक स्क्रिप्ट से एक सहज आवेदन में एक अतिथि अनुप्रयोग चलाने के लिए एक लांचर में रखा जा सकता है जिसे हमने निम्नलिखित प्रक्रिया का परीक्षण किया:

  • VirtualBox प्रबंधक प्रारंभ करें
  • आप के साथ खिड़कियों में लॉग इन करें उपयोगकर्ता और पासवर्ड
  • निर्बाध मोड में स्विच करें Host+L
  • सहज मोड में मशीन की स्थिति को बचाएं

अब हम निम्न कमांड के साथ वर्चुअल मशीन पर पूर्ण कमांड लाइन नियंत्रण प्राप्त कर सकते हैं:

  • वर्चुअल मशीन को सीमलेस सेव स्टेट से शुरू करें

    VBoxManage startvm "<Name_of_VM>"

    या (क्यूटी सीमा के लिए)

    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

अपने उबंटू डेस्कटॉप पर सीमलेस विंडोज एप्लीकेशन विंडो का आनंद लेने के लिए इन्हें स्क्रिप्ट में रखें।

यदि आपने पासवर्ड रहित विंडोज लॉगऑन सेट किया है तो यह काम नहीं करेगा। सीमाओं के लिए वर्चुअल बॉक्स मैनुअल में देखें और इसे काम करने के लिए विंडोज को कैसे कॉन्फ़िगर करें।

इसके अलावा, खाली पासवर्ड के साथ या बिना खातों का उपयोग करने के लिए, अतिथि की समूह नीति को बदलना होगा। ऐसा करने के लिए, gpedit.msc टाइप करके कमांड लाइन पर समूह नीति संपादक खोलें, कुंजी खोलें Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Optionsऔर Accounts: Limit local account use of blank passwords to console logon onlyविकलांग के मान को बदलें ।

समूह नीति संपादक (gpedit.msc) के बिना ऑपरेटिंग सिस्टम पर, जैसे कि विंडोज के होम एडिशन, रजिस्ट्री कुंजी पर एक DWORD बनाना HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\limitblankpassworduseऔर इसे शून्य पर सेट करना इस उत्तर के अनुसार एक ही प्रभाव प्राप्त करेगा ।


क्या इनमें से प्रत्येक कमांड को विंडोज कमांड लाइन या उबंटू कमांड लाइन से चलाया जाना चाहिए?
एंडरसन ग्रीन

बहुत अच्छी अवधारणा है, हालांकि मैंने किसी कारण से सहज मोड को कभी पसंद नहीं किया है - शायद इसलिए कि यह कीबोर्ड नेविगेशन के बारे में भ्रमित करता है। लेकिन मैं अपने कुछ विंडोज़ कार्यक्रमों के लिए इसका उपयोग करने की कोशिश कर रहा हूं, जिन्हें मैं अभी भी उपयोग करता हूं, जैसे क्विकेन और आईट्यून्स। @AndersonGreen: यह उबंटू कमांडलाइन से चलाया जाता है, और आसानी से परीक्षण के लिए एक टर्मिनल में प्रवेश किया जा सकता है, फिर एक स्क्रिप्ट में बनाया गया।
मार्टी फ्राइड

क्या पासवर्ड (स्क्रिप्ट में दर्ज किया जा रहा है) विंडोज लॉगिन पासवर्ड या उबंटू लॉगिन पासवर्ड होना चाहिए?
एंडरसन ग्रीन

यह विंडोज़ पासवर्ड है जिसकी आपको आवश्यकता है जैसे कि आप उबंटू में लॉग इन हैं, और वीएम शुरू करने के लिए रूट एक्सेस की आवश्यकता नहीं होनी चाहिए। ध्यान दें कि आपको काम करने के लिए एक Windows पासवर्ड की आवश्यकता है और लॉगिन करें।
तक्षक

इस काम को विपरीत मनोर में करना चाहिए (मुख्य मशीन के रूप में विंडोज चलाना और वर्चुअल मशीन के रूप में लिनक्स)
विलियम

3

यह एक उत्तर की तुलना में अधिक संकेत है, लेकिन यह एक टिप्पणी के लिए बहुत बड़ा है।

आपको शायद यह देखना चाहिए । डॉक्स के अनुसार, यह कमांड, होस्ट ओएस (I से उबंटू होस्ट और विंडोज गेस्ट) को चलाता है:

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

विंडोज (अतिथि) में regedit खोलना चाहिए, लेकिन मैं इसे काम करने में कभी सक्षम नहीं हुआ।

आप भी उपयोग कर सकते हैं

VBoxManage showvminfo "Windows XP Pro" | grep State

यह जाँचने के लिए कि कोई VM चल रहा है या नहीं।


दिलचस्प विचार, और मुझे लगता है कि इसे कार्य को पूरा करने के लिए दूसरे तरीके के रूप में इस्तेमाल किया जा सकता है। अतिथि को होस्ट से लॉन्च किया जा सकता है, फिर जब वह चल रहा होता है, तो कमांड को कमांड चलाने के लिए काम करने के लिए संभवतः बनाया जा सकता है। एक प्रोग्रामर के लिए, यह मेरे विचार से आसान तरीका हो सकता है; इसमें वीएम के उठने की प्रतीक्षा करने के लिए लूप में "स्लीप" का उपयोग करना शामिल है, लेकिन यह होस्ट से एकल स्क्रिप्ट के साथ किया जा सकता है।
मार्टी फ्राइड

मैंने अभी-अभी आपकी पहली एक्ज़ीक्यूट कमांड को आज़माया था और पहले से चल रहे विंडोज एक्सपी वीएम से अपने पहले प्रयास में क्विकेन को चलाने में सक्षम था, जिसका नाम "विंडोज़ एक्सपी" था, इस कमांड का इस्तेमाल उबंटू टर्मिनल कमांडलाइन से किया VBoxManage guestcontrol Windows\ XP exec --image c:\\program\ files\\quicken\\qw.exe --username XXXXX --password XXXXXगया था : जहां XXXXX मेरा उपयोगकर्ता नाम और पासवर्ड था।
मार्टी फ्राइड

शायद मेरी समस्या यह है कि मैं पासवर्ड कम खाते का उपयोग करता हूं।
जेवियर रिवेरा

शायद ... मैंने सिर्फ आपके प्रारूप का उपयोग करने के लिए चलाए गए कमांड को बदल दिया और यह वास्तव में regedit चला।
मार्टी फ्राइड

टककट ने कहा है कि यह मेरे जैसे पासवर्ड रहित खातों में काम नहीं करता है। यह बताता है कि मैं ऐसा क्यों नहीं कर पाया;)।
जेवियर रिवेरा

2

जब मैंने महसूस किया कि मैंने काम नहीं किया है तो मैंने मूल विचार को हटा दिया क्योंकि लिनक्स वीएम में विंडोज़ विभाजन तक पहुंचने में सक्षम नहीं होगा यदि यह पहले से ही नहीं चल रहा है। ऐसा करने के लिए एक अधिक जटिल तरीका हो सकता है, लेकिन मुझे नहीं पता कि क्या यह वास्तव में इसके लायक है।

एक साझा साझा निर्देशिका होना संभव है, और विंडोज में एक स्क्रिप्ट हमेशा इस निर्देशिका की जांच करेगी कि यह खाली है या नहीं। यदि नहीं, तो यह स्क्रिप्ट को निर्देशिका में चलाएगा, जिसे वीएम को चलाने से पहले उबंटू प्रणाली द्वारा वहां रखा जाएगा।

आपके पास एक दूसरी स्क्रिप्ट हो सकती है जो 1 को हटा देती है ताकि यह अगली बार न चले।


मैं विजुअल स्टूडियो के लिए एक शॉर्टकट बनाना चाहता हूं और इंटरनेट एक्सप्लोरर के लिए एक शॉर्टकट जो उबंटू डेस्कटॉप से ​​मंगवाया जा सकता है (ताकि वे वर्चुअल मशीन में चले)। क्या यह आपके द्वारा वर्णित विधि का उपयोग करके किया जा सकता है?
एंडरसन ग्रीन

मैं जानना चाहूंगा कि क्या उलटा भी किया जा सकता है - अतिथि ऑपरेटिंग सिस्टम से एक मेजबान एप्लिकेशन (जैसे कोलूरपेंट) लॉन्च करना।
एंडरसन ग्रीन

क्या अतिथि परिवर्धन का उपयोग करके विलोम किया जा सकता है?
एंडरसन ग्रीन

इसके अलावा, क्या आप विंडोज स्टार्टअप फ़ोल्डर या उबंटू स्टार्टअप एप्लिकेशन सूची की बात कर रहे हैं?
एंडरसन ग्रीन

क्षमा करें, मुझे एहसास हुआ कि मेरा पहला विचार त्रुटिपूर्ण था, क्योंकि विंडोज़ फ़ोल्डर तब तक मौजूद नहीं है जब तक कि वीएम चल रहा है। मैंने अपने उत्तर को पूरी तरह से संशोधित किया, और मुझे आशा है कि यह बहुत भ्रामक नहीं है।
मार्टी फ्राइड

1

मैं एक ही चीज चाहता था और गेस्टकंट्रोल का उपयोग किए बिना इसे हल करना समाप्त कर दिया। मेरे MacOS X होस्ट पर मेरे पास एक फ़ोल्डर है (जिसका नाम Windows है) जो मेरे vbox क्लाइंट में Win7 चला रहा है उसने Z: के रूप में मैप किया है। मैं इस तरह के मेजबान और मेरे ग्राहकों के बीच संवाद करने के लिए डमी-फाइलों का उपयोग करता हूं:

मैक होस्ट पर: - मैं विन-क्लाइंट में शुरू करना चाहता था, प्रत्येक विंडोज़ अनुप्रयोग के लिए एक आइकन के साथ एक शेल-स्क्रिप्ट बनाई। वे मूल रूप से क्या करते हैं यह सुनिश्चित करता है कि वर्चुअलबॉक्स को पहले शुरू नहीं किया गया है और फिर साझा फ़ोल्डर में "इस विशेष एप्लिकेशन को प्रारंभ करें" बनाता है जिसे विंडोज स्टार्टअप के बाद पढ़ सकता है। इस तरह की स्क्रिप्ट कैसी दिखती है, इसका उदाहरण यह है:

#!/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

फिर विंडोज़ क्लाइंट पर मेरे पास स्टार्टअप-फ़ोल्डर में एक मेलिंग स्क्रिप्ट (बैट-फाइल) है जो इस तरह दिखता है:

@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

इस तरह, किसी भी समय मैं अपने मैक पर एक नया क्लाइंट-स्टार्टअप आइकन जोड़ना चाहता हूं मैं शेल स्क्रिप्ट की प्रतिलिपि बनाता हूं, एक नई डमी फ़ाइल का आविष्कार करता हूं और क्लाइंट पर बैट-स्क्रिप्ट में मिलान स्टार्टअप लाइनों को जोड़ता हूं। महान काम करता है और मुझे लगता है कि यह पिछली पोस्ट में मार्टीस के विचार के अनुरूप है।


क्या आपने इसे उबंटू होस्ट में टेस्ट किया है?
user68186

नहीं, लेकिन मुझे पूरा यकीन है कि यह बिना ग्लिट्स के काम करेगा। Vbox कमांड समान हैं और इसलिए बैश हैं।
शहरी

इसके pgrepबजाय इसका उपयोग करना अधिक सुरक्षित है ps | grep। उत्तरार्द्ध खुद के मिलान के जोखिम को चलाता है।
मुरु

हाँ तुम सही हो। मेरा मानना ​​है कि सेल्फ मैच की समस्या को दूर करने के लिए एक अतिरिक्त grep -v जोड़कर ps का उपयोग करके इसे ऊपर तय किया गया है। जैसा कि आपने इस मामले में VBox नाम 'विंडोज 7' के बाद से इस मामले में सुझाया है, मैं इस तरह से pgrep का उपयोग करने का पता नहीं लगा सका, इस तरह से इस प्रक्रिया के लिए एक टिप्पणी तर्क है: MacMini:~ urban$ ps ax | grep -v grep | grep 'Windows 7' 10874 ?? R 4:38.49 /Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/VirtualBoxVM --comment Windows 7 --startvm 24507412-789d-42ed-9c79-b4faf0c2d130 --no-startvm-errormsgboxलेकिन शायद आप इस पर एक सुझाव है?
शहरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.