2011-04-19 18 views
4

我對WMI和COM真的很陌生。更改用戶在C#中使用WMI的家長控制設置

我想改變一些參數到用戶帳戶家長控制和 唯一的API可用是WMI。要使用的WMI提供程序類是WpcUserSettings。

我不明白如何修改每個用戶的參數。我是否必須爲每個用戶創建一個 這個類的ManagmentObject,或者他們是否已經爲每個用戶實例化了。

如果有人可以給我一個用戶的示例代碼,它會真的幫助。

Thanx!編輯: 嗨,再次。我用你的例子來獲取用戶帳戶名稱和SIDS。但是,當我搜索WpcUserSettings沒有結果,我用WMI Studio來檢查這個類,並沒有實例,所以我無法讀取或設置屬性。你有一個想法如何解決這個問題?

修正:好吧,我找到了訣竅。您必須使用ManagementObject.InvokeMethod()爲要添加到家長控制管理中的每個用戶調用WpcSystemSettings的方法AddUser(SID)。然後,您可以在WpcUserSettings中啓用家長控制並執行任何您想要的操作。

回答

3

WpcUserSettings wmi類別存在於root\CIMV2\Applications\WindowsParentalControls命名空間中,並不公開用戶更新數據的任何方法,但顯示的所有屬性都是可讀/寫的,但明顯屬於SID屬性。您可以遍歷特定用戶的屬性並更改這些值。

所以,你可以用一句話來檢索所有用戶 SELECT * FROM WpcUserSettings

或這句話修改特定用戶

SELECT * FROM WpcUserSettings Where SID="the SID of the user to modify"

然後更新值的特性使WMI查詢您要修改的屬性,最後調用Put方法來設置新值。

查看示例應用程序。

using System; 
using System.Collections.Generic; 
using System.Management; 
using System.Text; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      try 
      { 
       ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2\\Applications\\WindowsParentalControls", "SELECT * FROM WpcUserSettings"); 
       foreach (ManagementObject queryObj in searcher.Get()) 
       { 
        if (queryObj["SID"] == "The user SID to modify") 
        { 
         //set the properties here 

         queryObj["AppRestrictions"] = true; 
         queryObj["HourlyRestrictions"] = true; 
         queryObj["LoggingRequired"] = false; 
         //queryObj["LogonHours"] = ; 
         //queryObj["OverrideRequests"] = ; 
         queryObj["WpcEnabled"] = true; 
         queryObj.Put(); 
        } 
       } 
      } 
      catch (ManagementException e) 
      { 
       Console.WriteLine("An error occurred setting the WMI data: " + e.Message); 
      } 
      Console.ReadKey(); 
     } 
    } 
} 
+0

非常感謝您提供清晰準確的答案。 – Chakib 2011-04-19 19:46:23

+0

我們是否可以通過編程方式添加應用程序覆蓋。我看到WpcAppOverride在那裏。我可以閱讀從Windows界面應用的限制,使用上面所說的寫。但不能創造新的。 – sandeep 2015-04-03 09:51:35

+0

謝謝。如何添加程序限制? – 2017-02-04 11:35:48