¿Cómo cambiar el estado de energía del host de Windows desde el sistema operativo invitado Ubuntu?

¿Cómo cambiar el estado de energía del host de Windows desde el sistema operativo invitado Ubuntu?

Tengo un invitado Ubuntu14.04 en VMWare Workstation 12 en un host de Windows 7.

¿Cómo puedo cambiar el estado de energía del host, por ejemplo, apagarlo o suspenderlo, desde el sistema operativo invitado?

Respuesta1

Actualmente mi forma es usar la carpeta compartida, en el sistema operativo invitado:

echo "">/mnt/hgfs/share/sleep

Luego, en el host, escriba un programa para monitorear si el archivo "dormir" existe y ejecutar la acción de dormir.

Para apagar, el programa monitorea vmware-vmx.exe, cuando desaparece, apaga la computadora.

El programa C# es como:

 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);
        }
    }
}

Aunque funciona, ¿hay alguna forma más sencilla?

información relacionada