3

Surface タブレットの Windows RT で、次の最初の行で失敗する VB スクリプトを実行しています。

Set WshShell = WScript.CreateObject("WScript.Shell")

エラーメッセージには次のように記載されています。

次のエラー コードでオブジェクト WScript.Shell を作成できませんでした: 80070005

これは、アクセス許可に関係する一般的なエラー コードのようです。何か案は?

管理者権限で実行しています。

4

2 に答える 2

1

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

于 2021-01-17T06:11:18.383 に答える