1

Windows 8のファミリーセーフティコントロール、特にWebおよびアプリケーションフィルターリストをプログラムで読み書きするためのC#コードを書き込もうとしています。

WMIは、次のようなコマンドで値を公開できます。

PS C:\Windows\system32> Get-WmiObject -Class WpcURLOverride -Namespace root/CIMV2/Applications/WindowsParentalControls

__GENUS          : 2
__CLASS          : WpcURLOverride
__SUPERCLASS     :
__DYNASTY        : WpcURLOverride
__RELPATH        : WpcURLOverride.SID="S-1-5-21-4241459202-2635765079-3956675256-1002",URL="http://block.com"
__PROPERTY_COUNT : 3
__DERIVATION     : {}
__SERVER         : TEST-BOX
__NAMESPACE      : root\CIMV2\Applications\WindowsParentalControls
__PATH           : \\TEST-BOX\root\CIMV2\Applications\WindowsParentalControls:WpcURLOverride.SID="S-1-5-21-4241459202-2
                   635765079-3956675256-1002",URL="http://block.com"
Allowed          : 2
SID              : S-1-5-21-4241459202-2635765079-3956675256-1002
URL              : http://block.com
PSComputerName   : TEST-BOX

__GENUS          : 2
__CLASS          : WpcURLOverride
__SUPERCLASS     :
__DYNASTY        : WpcURLOverride
__RELPATH        : WpcURLOverride.SID="S-1-5-21-4241459202-2635765079-3956675256-1002",URL="http://allow.com"
__PROPERTY_COUNT : 3
__DERIVATION     : {}
__SERVER         : TEST-BOX
__NAMESPACE      : root\CIMV2\Applications\WindowsParentalControls
__PATH           : \\TEST-BOX\root\CIMV2\Applications\WindowsParentalControls:WpcURLOverride.SID="S-1-5-21-4241459202-2
                   635765079-3956675256-1002",URL="http://allow.com"
Allowed          : 1
SID              : S-1-5-21-4241459202-2635765079-3956675256-1002
URL              : http://allow.com
PSComputerName   : TEST-BOX

この質問では、既存のオブジェクトを複製することに言及していますが、汎用またはこれらの特定のWMIオブジェクトを使用して複製する方法が見つかりませんでした。

エントリを挿入または削除するにはどうすればよいですか?ご入力いただきありがとうございます。

4

1 に答える 1

2

実行可能なものを投稿することは、理想的ではないにしても、完全性について答えます。これらのスニペットは私のユースケースにかなり具体的に適用されますが、うまくいけば誰かを助けることができます

  private static SecurityIdentifier UserSID(string username)
  {
     var f = new NTAccount(username);
     return (SecurityIdentifier)f.Translate(typeof(SecurityIdentifier));
  }


  private string PsCmdAddSite(Uri url, bool allow)
  {
     return string.Format(
@"$o = ([WMIClass] ""root\CIMV2\Applications\WindowsParentalControls:WpcURLOverride"").CreateInstance()
$o.Allowed = {0}
$o.URL = ""{1}""
$o.SID = ""{2}""
$o.Put()", (allow ? "1" : "2"), url, UserSID('TargetUsername'));
  }


  private static string PsCmdRemoveAllSites()
  {
     return
@"$allSites = Get-WmiObject -Class WpcURLOverride -Namespace root/CIMV2/Applications/WindowsParentalControls;
foreach ($site in $allSites){Remove-WmiObject -InputObject $site;}";
  }


  private static void RunPsScript( string scriptText )
  {
     // create Powershell runspace, logically a single PS session
     Runspace runspace = RunspaceFactory.CreateRunspace();
     runspace.Open();

     // create a pipeline and feed the script text
     Pipeline pipeline = runspace.CreatePipeline();
     pipeline.Commands.AddScript(scriptText);

     pipeline.Commands.Add("Out-String");

     // execute the script
     pipeline.Invoke();
     runspace.Close();
  }
于 2012-10-12T18:12:28.080 に答える