
Ich habe einen Ubuntu14.04-Gast in VMWare Workstation 12 auf einem Windows 7-Host.
Wie kann ich den Energiestatus des Hosts vom Gastbetriebssystem aus ändern, z. B. ausschalten oder ruhen lassen?
Antwort1
Derzeit verwende ich den freigegebenen Ordner im Gastbetriebssystem:
echo "">/mnt/hgfs/share/sleep
Schreiben Sie dann auf dem Host ein Programm, um zu überwachen, ob die Datei „sleep“ vorhanden ist, und führen Sie die Sleep-Aktion aus.
Zum Herunterfahren überwacht das Programm vmware-vmx.exe. Wenn es verschwindet, fährt es den Computer herunter.
Das C#-Programm sieht folgendermaßen aus:
class ShutdownComputer
{
//true for sleep,false for shutdown
static bool sleep = true;
static public void ShutdownComputerDo()
{
string[] process_names = new string[]
{
"vmware-vmx",
};
while (true)
{
bool done = true;
string sleep_signal_fn = @"C:\VMachine\VM_Ubuntu14.04\share\sleep";
if (sleep)
{
done = File.Exists(sleep_signal_fn);
if (done) File.Delete(sleep_signal_fn);
}
else
{
foreach (string pn in process_names)
{
if (Process.GetProcessesByName(pn).Length > 0) done = false;
}
}
if (done)
{
var psi=sleep?
new ProcessStartInfo("rundll32.exe", " powrprof.dll,SetSuspendState 0,1,0")
: new ProcessStartInfo("shutdown", "/s /t 0");
psi.CreateNoWindow = true;
psi.UseShellExecute = false;
Process.Start(psi);
if (!sleep) break;
}
Thread.Sleep(5 * 1000);
}
}
}
Obwohl es funktioniert, gibt es einfachere Möglichkeiten?