このバージョンの Windows に付属する追加のロックダウン機能を使用して、Windows 8.1 IND でカスタム シェルを設定しようとしています。
Lock Down Manager で必要なエントリを正常に作成し、C# と WMI を介してカスタム シェルを問題なくオン/オフできます。
多数のデバイスへの展開を計画しているため、カスタム シェル セットアップも問題なく適用したいと考えています。
WMI Code Generatorを使用して、正しい値へのアクセスと設定を支援しています。
ただし、これを行うためにジェネレーターによって生成されたコードを実行しようとすると、WMI コード ジェネレーターと私の C# アプリの両方がクラッシュします。
Unhandled Exception: System.ArgumentOutOfRangeException: Specified argument was
out of the range of valid values.
Parameter name: path
at System.Management.ManagementObject.ManagementObjectCTOR(ManagementScope sc
ope, ManagementPath path, ObjectGetOptions options)
at WMISample.CallWMIMethod.Main()
コードサンプル:
public static void Main()
{
try
{
ManagementObject classInstance =
new ManagementObject("root\\StandardCimv2\\embedded",
"WESL_UserSetting", null);
// Obtain in-parameters for the method
ManagementBaseObject inParams =
classInstance.GetMethodParameters("SetCustomShell");
// Add the input parameters.
inParams["DefaultAction"] = 3;
inParams["Shell"] = "C:\\Dash\\someapp.exe";
inParams["Sid"] = "S-1-5-21-2560287794-1129801719-3036876794-1001";
// Execute the method and obtain the return values.
ManagementBaseObject outParams =
classInstance.InvokeMethod("SetCustomShell", inParams, null);
// List outParams
Console.WriteLine("Out parameters:");
Console.WriteLine("ReturnValue: " + outParams["ReturnValue"]);
}
catch(ManagementException err)
{
MessageBox.Show("An error occurred while trying to execute the WMI method: " + err.Message);
}
}
ドキュメントに記載されているパスはありません。コードがカスタムシェルを設定していない理由を誰かアドバイスできますか?