このクラスは、サインインしているユーザーのセキュリティ識別子 (SID) に基づいて起動するアプリケーションシェル起動ツールを構成し、アプリケーションが終了したときにシェル起動ツールが実行するリターン コードとリターン アクションのセットも構成します。
Windows エディションの要件
次の一覧には、シェル起動ツールをサポートする Windows エディションが含まれています。
✅ Enterprise /Enterprise LTSC
✅ Education
✅ IoT Enterprise / IoT Enterprise LTSC
構文
class WESL_UserSetting {
[read, write, Required] string Sid;
[read, write, Required] string Shell;
[read, write] Sint32 CustomReturnCodes[];
[read, write] Sint32 CustomReturnCodesAction[];
[read, write] sint32 DefaultAction;
[Static] uint32 SetCustomShell(
[In, Required] string Sid,
[In, Required] string Shell,
[In] sint32 CustomReturnCodes[],
[In] sint32 CustomReturnCodesAction[],
[In] sint32 DefaultAction
);
[Static] uint32 GetCustomShell(
[In, Required] string Sid,
[Out, Required] string Shell,
[Out, Required] sint32 CustomReturnCodes[],
[Out, Required] sint32 CustomReturnCodesAction[],
[Out, Required] sint32 DefaultAction
);
[Static] uint32 RemoveCustomShell(
[In, Required] string Sid
);
[Static] uint32 GetDefaultShell(
[Out, Required] string Shell,
[Out, Required] sint32 DefaultAction
);
[Static] uint32 SetDefaultShell(
[In, Required] string Shell,
[In, Required] sint32 DefaultAction
);
[Static] uint32 IsEnabled(
[Out, Required] boolean Enabled
);
[Static] uint32 SetEnabled(
[In, Required] boolean Enabled);
);
};
Members
次の表に、このクラスに属するすべてのメソッドとプロパティを示します。
メソッド
| メソッド | 説明 |
|---|---|
| WESL_UserSetting.SetCustomShell | SID に基づいて、特定のユーザーまたはグループのシェル 起動ツールを構成します。 |
| WESL_UserSetting.GetCustomShell | SID に基づいて、特定のユーザーまたはグループのシェル 起動ツール構成を取得します。 |
| WESL_UserSetting.RemoveCustomShell | SID に基づいて、特定のユーザーまたはグループのシェル 起動ツール構成を削除します。 |
| WESL_UserSetting.GetDefaultShell | 既定のシェル 起動ツール構成を取得します。 |
| WESL_UserSetting.SetDefaultShell | シェル起動ツールの既定の構成を設定します。 |
| WESL_UserSetting.IsEnabled | シェル 起動ツールが有効か無効か示す値を取得します。 |
| WESL_UserSetting.SetEnabled | シェル起動ツールを有効または無効にします。 |
プロパティ
| プロパティ | データ型 | 修飾子 | 説明 |
|---|---|---|---|
| Sid | 文字列 | [読み取り、書き込み、必須] | ユーザーまたはグループ SID。 |
| 貝 | 文字列 | [読み取り、書き込み、必須] | シェルとして起動するアプリケーション。 シェル プロパティは、Path 環境変数内のファイル名にすることも、アプリケーションへの完全修飾パスを含めることもできます。 パスで環境変数を使用することもできます。 シェル プロパティ内のスペースは、引用符で区切られた文字列の一部である必要があります。 |
| CustomReturnCodes | Sint32[] | [読み取り、書き込み] | シェルから返すことができるカスタム戻りコードの配列。 |
| CustomReturnCodesAction | Sint32[] | [読み取り、書き込み] | シェルの終了時にシェル起動ツールが実行するアクションを決定するカスタムリターンコードアクションの配列。 カスタム アクションは CustomReturnCodes の配列にマップされます。 考えられるアクションは次のとおりです。 0 - シェルを再起動します。 1 - デバイスを再起動します。 2 - デバイスをシャットダウンします。 3 - 何もしません。 |
| DefaultAction | Sint32 | [読み取り、書き込み] | シェル起動ツールは、シェルが終了したときに実行される既定のアクションです。 考えられるアクションは次のように定義されます。 0 - シェルを再起動します。 1 - デバイスを再起動します。 2 - デバイスをシャットダウンします。 3 - 何もしません。 |
注釈
シェル起動ツール を使用する デバイスには、WESL_UserSetting インスタンスが 1 つだけ存在します。
シェル起動ツールは、現在サインインしているユーザーの SID に対して定義されているカスタム構成 (存在する場合) を使用します。 それ以外の場合、シェル起動ツールは、ユーザーがメンバーであるグループ SID に対して定義されたカスタム構成 (存在する場合) を使用します。 ユーザーに対して複数のグループ カスタム構成が存在する場合、シェル起動ツールは最初に検出した有効な構成を使用します。 検索順序が定義されていません。
ユーザーの SID またはユーザーがメンバーであるグループ SID のカスタム構成がない場合、シェル起動ツールは既定の構成を使用します。
whoami コマンド ライン ツールを使用して、ユーザーとユーザーがメンバーになっているすべてのグループの SID を見つけることができます。
例
次のWindows PowerShell スクリプトは、シェル起動ツール用の Windows Management Instrumentation (WMI) プロバイダーを使用して、シェル起動ツールのカスタム シェル構成を追加および削除する方法を示しています。
$COMPUTER = "localhost"
$NAMESPACE = "root\standardcimv2\embedded"
# Create a handle to the class instance so we can call the static methods.
$ShellLauncherClass = [wmiclass]"\\$COMPUTER\${NAMESPACE}:WESL_UserSetting"
# This well-known security identifier (SID) corresponds to the BUILTIN\Administrators group.
$Admins_SID = "S-1-5-32-544"
# Create a function to retrieve the SID for a user account on a machine.
function Get-UsernameSID($AccountName) {
$NTUserObject = New-Object System.Security.Principal.NTAccount($AccountName)
$NTUserSID = $NTUserObject.Translate([System.Security.Principal.SecurityIdentifier])
return $NTUserSID.Value
}
# Get the SID for a user account named "Cashier". Rename "Cashier" to an existing account on your system to test this script.
$Cashier_SID = Get-UsernameSID("Cashier")
# Define actions to take when the shell program exits.
$restart_shell = 0
$restart_device = 1
$shutdown_device = 2
$do_nothing = 3
# Examples
# Set the command prompt as the default shell, and restart the device if it's closed.
$ShellLauncherClass.SetDefaultShell("cmd.exe", $restart_device)
# Display the default shell to verify that it was added correctly.
$DefaultShellObject = $ShellLauncherClass.GetDefaultShell()
"`nDefault Shell is set to " + $DefaultShellObject.Shell + " and the default action is set to " + $DefaultShellObject.defaultaction
# Set Internet Explorer as the shell for "Cashier", and restart the machine if it's closed.
$ShellLauncherClass.SetCustomShell($Cashier_SID, "c:\program files\internet explorer\iexplore.exe www.microsoft.com", ($null), ($null), $restart_shell)
# Set Explorer as the shell for administrators.
$ShellLauncherClass.SetCustomShell($Admins_SID, "explorer.exe")
# View all the custom shells defined.
"`nCurrent settings for custom shells:"
Get-WmiObject -namespace $NAMESPACE -computer $COMPUTER -class WESL_UserSetting | Select Sid, Shell, DefaultAction
# Remove the new custom shells.
$ShellLauncherClass.RemoveCustomShell($Admins_SID)
$ShellLauncherClass.RemoveCustomShell($Cashier_SID)