none
在C#中使用 System.Management 调用系统关机,在Win10下快速启动不生效 RRS feed

  • 问题

  • 我在我的程序中使用以下代码关闭计算机:

            private void PowerControl(string flag)
            {
                ManagementBaseObject mboShutdown = null;
                ManagementClass mcWin32 = new ManagementClass("Win32_OperatingSystem");
                mcWin32.Get();
    
                mcWin32.Scope.Options.EnablePrivileges = true;
                ManagementBaseObject mboShutdownParams = mcWin32.GetMethodParameters("Win32Shutdown");
    
                //  "1" 关机, "2" 重启
                mboShutdownParams["Flags"] = flag;
                mboShutdownParams["Reserved"] = "0";
                foreach (ManagementObject manObj in mcWin32.GetInstances())
                {
                    mboShutdown = manObj.InvokeMethod("Win32Shutdown", mboShutdownParams, null);
                }
            }

    但是我在调用PowerControl("1");

    后,虽然是关机了,但是快速启动并不生效,

    设置中的快速启动是开了

    应该如何解决这个问题?

    2018年2月13日 4:24

全部回复

  • Hi,

    欢迎在MSDN论坛发帖。

    你可以尝试使用windows 的API,然后使用P/Invoke 方式来调用这个函数,这样可以快速启动windows 操作系统。

    ExitWindowsEx 函数里面包含EWX_REBOOT 这个参数,详细信息你可以参考一下里面。

    我还找到一些相似的解决方法,你可以参考一下。

    https://stackoverflow.com/questions/462381/restarting-windows-from-within-a-net-application

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年2月13日 6:49
    版主
  • 这个方法可以关机计算机,但是关机后,下次开机时依然没有快速启动,而是常规的启动

    还有如果使用shutdown -s -hybrid -t 10的话,这个命令在Windows 7下是无效的,因为Win 7没有快速启动这个功能。

    2018年2月13日 9:43
  • 试下DOS命令shutdown

    ProcessStartInfo startInfo = new ProcessStartInfo("shutdown", "-m \\\\192.168.1.5 -r -c \"Will shutdown\" -t 10");
    startInfo.Verb = "runas";

    Process.Start(startInfo);

    参考

    https://www.computerhope.com/shutdown.htm


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2018年2月14日 0:42
  • 可能我的意思表达不清楚,我需要执行的是类似于用户点击开始菜单中的关机命令,这个命令如果解释成DOS命令的话,在Win 7下就是shutdown -s -t 0,在Win8, 8.1, 10是shutdown -s -t 0 -hybrid,我要如何在不同的操作系统上执行对应的命令呢?

    2018年2月15日 6:14
  • https://msdn.microsoft.com/en-us/library/system.environment.osversion%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

    http://www.c-sharpcorner.com/uploadfile/mahesh/get-operating-system-data-and-version-in-C-Sharp/

    class Program

        {

            static void Main(string[] args)

            {

                Console.WriteLine("Operating System Detaiils");

                OperatingSystem os = Environment.OSVersion;

                Console.WriteLine("OS Version: " + os.Version.ToString());

                Console.WriteLine("OS Platoform: " + os.Platform.ToString());

                Console.WriteLine("OS SP: " + os.ServicePack.ToString());

                Console.WriteLine("OS Version String: " + os.VersionString.ToString());

                Console.WriteLine();

     

                // Get Version details

                Version ver = os.Version;

                Console.WriteLine("Major version: " + ver.Major);

                Console.WriteLine("Major Revision: " + ver.MajorRevision);

                Console.WriteLine("Minor version: " + ver.Minor);

                Console.WriteLine("Minor Revision: " + ver.MinorRevision);

                Console.WriteLine("Build: " + ver.Build);

     

                Console.ReadLine();

            }

        }


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2018年2月23日 0:52
  • https://msdn.microsoft.com/library/windows/desktop/ms724832.aspx

    Operating system Version number
    Windows 10 10.0*
    Windows Server 2016 10.0*
    Windows 8.1 6.3*
    Windows Server 2012 R2 6.3*
    Windows 8 6.2
    Windows Server 2012 6.2
    Windows 7 6.1
    Windows Server 2008 R2 6.1
    Windows Server 2008 6.0
    Windows Vista 6.0
    Windows Server 2003 R2 5.2
    Windows Server 2003 5.2
    Windows XP 64-Bit Edition 5.2
    Windows XP 5.1
    Windows 2000 5.0

    * For applications that have been manifested for Windows 8.1 or Windows 10. Applications not manifested for Windows 8.1 or Windows 10 will return the Windows 8 OS version value (6.2). To manifest your applications for Windows 8.1 or Windows 10, refer to Targeting your application for Windows.


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2018年2月23日 0:53