在Surface平板电脑上的Windows RT中,我正在运行第一行失败的VB脚本:
Set WshShell = WScript.CreateObject("WScript.Shell")
错误消息显示:
无法使用错误代码:80070005
创建对象WScript.Shell
这似乎是与访问权限有关的通用错误代码。有什么想法吗?
我正在使用管理员权限运行。
答案 0 :(得分: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
在我打完补丁的 Surface 2 设备上,截至今天,即 2021 年 1 月 17 日,唯一具有 ProgID 的开明 COM 对象(即,唯一可从 Windows RT 上的 VBScript 调用的对象)是:
由于用户模式代码完整性 (UMCI),无法在 Windows RT 上创建其他 VBScript 对象(例如 WScript.Shell、WScript.Network、WinNTSystemInfo、Wbemscripting.SWbemLocator 等)。
要获得上述代码的更强大版本,请查看我发布到我的 GitHub 存储库的脚本“Get-COMObjectsProgIDsAllowedToLaunch.ps1”:https://github.com/franklesniak/PowerShell_Resources
答案 1 :(得分:0)
我在一些地方看到人们评论RT不允许VBScript运行WScript.Shell
,但我没有找到任何相关的官方文档。
可能只是脚本需要以管理员权限运行。