如何从 Ubuntu 客户操作系统更改 Windows 主机的电源状态?

如何从 Ubuntu 客户操作系统更改 Windows 主机的电源状态?

我在 Windows 7 主机上的 VMWare Workstation 12 中有一个 Ubuntu14.04 客户机。

如何从客户操作系统更改主机的电源状态,例如关闭电源或睡眠?

答案1

目前我的方式是在客户操作系统中使用共享文件夹:

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

然后在主机上编写程序,监视文件“sleep”是否存在,并执行睡眠动作。

为了关机,该程序监视vmware-vmx.exe,当它消失时,它会关闭计算机。

C#程序如下:

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

虽然它有效,但是还有更简单的方法吗?

相关内容