Uruchamianie procesu na maszynie wirtualnej.

0

Witam,
dopiero zaczynam swoją przygodę z C# i mam pewien problem a mianowicie gdy w mojej aplikacji wcisnę guzik uruchamia się maszyna wirtualna, robie to w taki sposób :

System.Diagnostics.Process.Start("D:\VirtualBox\VBoxManage.exe",@"startvm WINXP");

Lecz chciałbym aby po uruchomieniu Maszyny Wirtualnej na niej został wywołany kolejny proces(program) który po odpaleniu wchodziłby Files>Modify>Open

0

to dodaj go do autostartu na tamtej maszynie. VM to dla systemu hosta osobna maszyna. Możesz np. napisać serwis, który będzie się uruchamiam na VM i pozwalał Ci na robienie różnych rzeczy (np. uruchamiać program)

0

Tylko że dodam go tylko do autostartu i on się odpali natomiast nie wykona tej części "który po odpaleniu wchodziłby Files>Modify>Open"

1

to napisz kolejny program ktory to robi i jego dodaj do VM

0

Z tym że nie w każdym przypadku uruchamiania maszyny wirtualnej chcę to robić, tylko w przypadku jeśli maszyna została uruchomiona przez ten konkretny program.

0

Istnieje bardzo przyjemna biblioteka do tego typu rzeczy w pythonie Fabric:
http://www.fabfile.org/
Potrzebujesz tylko zainstalowac ssh na virtualnej maszynie.
Wtedy laczysz sie przez fabrica i mozesz wykonywac dowolne polecenia z maszyny hosta.
Nie jestem tylko pewny czy fabric wspiera windowsa (raczej nie) ale mozesz poszukac w googlach czegos podobnego pod windowsa.

2

moze ktos bedzie mial lepszy pomysl. Ja widze to tak.

nie masz jak sprawdzic czy vm zostala uruchomiona przez proces czy nie (w sensie w VM). Musialbys napisac jakas komunikacje miedzy VM a PC z ktorego uruchamiasz.
Defaultowo uruchamiasz ta komunikacje w autostarcie w VM. Niech ta komunikacja wysyla UDP globalnie w sieci lokalnej

Na PC nasluchujesz (poprzez udp) czy jakies instancje wyslaly wiadomosci. Odbierasz wiadomosc od VM. Dzieki temu mozesz nawiazac polaczenie tcp/ip i wtedy mozesz wyslac jakas komende zeby otworzyl jakies okno. Jezeli sie nie polaczy przy 10 probach udp to zamykasz proces wysylania na VM.

oczywiscie nie musi byc to udp/tcp moze to tez byc messagequeue jak RabbitMQ, ale udp rowiazanie wydaje sie najprostsze i najszybsze do napisania

0

Defaultowo uruchamiasz ta komunikacje w autostarcie w VM. Niech ta komunikacja wysyla UDP globalnie w sieci lokalnej

Na PC nasluchujesz (poprzez udp) czy jakies instancje wyslaly wiadomosci. Odbierasz wiadomosc od VM. Dzieki temu mozesz nawiazac polaczenie tcp/ip i wtedy mozesz wyslac jakas komende zeby otworzyl jakies okno. Jezeli sie nie polaczy przy 10 probach udp to zamykasz proces wysylania na VM.

Ale po co tak kombinujesz?

Na hoście jest postawiony server TCP w ramach tworzonego programu.
VM-ka ma w autostarcie klienta. Klient łączy się z hostem.

I już, mogą się komunikować.

1 użytkowników online, w tym zalogowanych: 0, gości: 1