gpt4 book ai didi

vbscript - VBScript 中的 WScript.Shell 不适用于 Windows RT

转载 作者:行者123 更新时间:2023-12-04 18:09:00 24 4
gpt4 key购买 nike

在 Surface 平板电脑上的 Windows RT 中,我运行的 VB 脚本在第一行失败:

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

错误信息是这样的:

Could not create object WScript.Shell with the error code: 80070005

这似乎是与访问权限有关的一般错误代码。有什么想法吗?

我以管理员权限运行。

最佳答案

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

关于vbscript - VBScript 中的 WScript.Shell 不适用于 Windows RT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19143886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com