嘗試關閉Windows 7在C#4.0我有一個程序,一些遺留代碼執行以下操作來關閉窗口:System.Management.ManagementException:「未保留特權」。當使用WMI
ManagementClass mc = new ManagementClass("Win32_OperatingSystem");
mc.Get();
mc.Scope.Options.EnablePrivileges = true;
ManagementBaseObject mboShutdown = mc.GetMethodParameters("Win32Shutdown");
mboShutdown["Flags"] = "5"; // shutdown + force
mboShutdown["Reserved"] = "0";
foreach(ManagementObject mbo in mc.GetInstances())
{
mbo.InvokeMethod("Win32Shutdown", mboShutdown, null);
}
這是一個.NET 3.5的應用程序,這是工作沒有問題。最近,依賴性升級需要將目標框架撞擊到4.0客戶端配置文件。現在,每當代碼運行,我得到以下異常:
System.Management.ManagementException: "Privilege not held."
該應用程序是管理員帳戶下運行在Windows 7上,沒有什麼比已更新這個軟件改變等。
我已經能夠找到,而尋找一個解決方案是一些很老的bug報告有關.NET 1.1的唯一信息,以及MSDN上的以下線程從未回答: http://social.msdn.microsoft.com/Forums/vstudio/en-US/fa0bcae5-6f30-42b6-bb5f-b8a6edb88ac4/encountered-privillege-not-held-exception-when-rebooting-the-server-in-net40-framewrk
有誰知道這個問題的原因是什麼?我是否需要停止使用WMI,只需要啓動InitiateSystemShutdownEx或類似的東西?
也許[此鏈接](http://msdn.microsoft.com/en-us/library/windows/desktop/aa393627%28v=vs.85%29.aspx)將有所幫助。 –
你可以使用'右鍵單擊'執行'''以管理員身份運行' – Arshad
Arshad,我試過了,沒有任何改變。 – bj0