Программное выключение компьютера. Как?

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by herfleisch, 4 Jan 2010.

  1. herfleisch

    herfleisch Elder - Старейшина

    Joined:
    7 Jan 2009
    Messages:
    578
    Likes Received:
    203
    Reputations:
    13
    В общем, возникла потребность программного выключения компьютера. Т.е. когда происходит определённое событие, программа должна выключить компьютер без предупреждения. MSDN ничего не дал. Поиск по форуму - тоже. В какую сторону рыть? Пните уже куда-нибудь.

    Желательно: C#, .NET
     
  2. Forcer

    Forcer Elder - Старейшина

    Joined:
    12 Apr 2007
    Messages:
    321
    Likes Received:
    98
    Reputations:
    12
  3. herfleisch

    herfleisch Elder - Старейшина

    Joined:
    7 Jan 2009
    Messages:
    578
    Likes Received:
    203
    Reputations:
    13
    Собственно, на предоставленной ссылке нижеследующий код:
    Code:
    using System.Management;
    
        void Shutdown()
        {
            ManagementBaseObject mboShutdown = null;
            ManagementClass mcWin32 = new ManagementClass("Win32_OperatingSystem");
            mcWin32.Get();
    
            // You can't shutdown without security privileges
            mcWin32.Scope.Options.EnablePrivileges = true;
            ManagementBaseObject mboShutdownParams =
                     mcWin32.GetMethodParameters("Win32Shutdown");
    
            // Flag 1 means we want to shut down the system. Use "2" to reboot.
            mboShutdownParams["Flags"] = "1";
            mboShutdownParams["Reserved"] = "0";
            foreach (ManagementObject manObj in mcWin32.GetInstances())
            {
                mboShutdown = manObj.InvokeMethod("Win32Shutdown", 
                                               mboShutdownParams, null);
            }
        }
    Я тут ещё нарыл один способ, но он не хочет работать... Может кому пригодится:
    Code:
    System.Diagnostics.Process p=new System.Diagnostics.Process();
    p.StartInfo.FileName="cmd.exe";
    p.StartInfo.Arguments="/c shutdown -s";
    p.Start();
    Спасибо за многочисленные ответы ))))
     
  4. _antony

    _antony Elder - Старейшина

    Joined:
    16 Jul 2008
    Messages:
    80
    Likes Received:
    43
    Reputations:
    0
    http://msdn.microsoft.com/en-us/library/aa376868%28VS.85%29.aspx

    Code:
    MSDN ничего не дал
    Такого не бывает :D :D :D ;)
     
  5. RDL_Rider

    RDL_Rider New Member

    Joined:
    21 Jun 2009
    Messages:
    100
    Likes Received:
    3
    Reputations:
    0
    +1
    такого не бывает. Ну, за редким исключением вроде Ring-0 и т.д. и т.п. ;)
     
  6. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    RDL_Rider функции и структуры ядра системы тоже не описаны в MSDN / ring 3
     
    _________________________
  7. herfleisch

    herfleisch Elder - Старейшина

    Joined:
    7 Jan 2009
    Messages:
    578
    Likes Received:
    203
    Reputations:
    13
    Да, забыл добавить... Доступа к MSDN.com у меня нет. Есть только установленные MSDN Express. А там, как известно, много чего нет...