Windows RT (Windows 8 RT、Windows 8.1 RT、Surface RT とも呼ばれます) は、ユーザー モード コード整合性 (UMCI) を使用して、実行できるソフトウェアを制限します。
VBScript の場合、UMCI のコード整合性コンポーネントは、「対応」COM オブジェクトの作成のみを許可します。
「対応している COM オブジェクトはどれですか?」あなたが尋ねる。良い質問。Windows RT デバイスでPowerShell を使用して調べてみましょう。
$arrInstances = @(Get-WMIObject -ClassName 'Win32_COMSetting')
$arrCOMObjectProgIDs = @($arrInstances | Where-Object { $null -ne $_.ProgId } |
ForEach-Object { $_.ProgId })
$ErrorActionPreference = [System.Management.Automation.ActionPreference]::SilentlyContinue
$result = @($arrCOMObjectProgIDs | ForEach-Object { if (New-Object -ComObject $_) { $_ } })
$result
2021 年 1 月 17 日の時点で、完全にパッチが適用された Surface 2 デバイスで、ProgID を持つ対応する唯一の COM オブジェクト (つまり、Windows RT で VBScript から呼び出すことができる唯一のもの) は次のとおりです。
- Scripting.FileSystemObject
- VBScript.RegExp
- Scripting.Dictionary
ユーザー モード コードの整合性 (UMCI) により、Windows RT で他の VBScript オブジェクト (WScript.Shell、WScript.Network、WinNTSystemInfo、Wbemscripting.SWbemLocator など) を作成することはできません。
上記のコードのより堅牢なバージョンについては、私の GitHub リポジトリに投稿されたスクリプト「Get-COMObjectsProgIDsAllowedToLaunch.ps1」を確認してください: https://github.com/franklesniak/PowerShell_Resources