【问题标题】:Reading REG_QWORD with VBScript?用 VBScript 读取 REG_QWORD?
【发布时间】:2021-08-17 17:54:17
【问题描述】:

我认为这个问题不言自明。我无法从注册表中获取一些值,我希望这里的人可以帮助我。

我被 IE9 卡住了,因为它是唯一一个有一些合理的 CSS 功能,并且确实支持GetObject()

所以现在,假设我正在尝试在"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000\HardwareInformation.qwMemorySize" 检索 GPU 的内存大小(据我所知,这应该是通用路径和密钥)。

这就是问题的开始。要么我没有得到任何输出,要么出现一些错误,说明某些内容不同,或者是什么(我的系统以不同的语言运行,所以我无法提供正确的翻译)。

经过一番研究,我似乎找到了问题 - 我试图阅读的值是REG_QWORD,不幸的是我只能找到很少的内容,而且大多数解决方案都不起作用对我来说。

所以现在,我使用这段代码,不出所料,它也不起作用(我从一开始就有的代码):

for Each oItem in colGPUs
    memory = oItem.AdapterRAM / 1048576
    If memory < 0 Then
        If InStr(oItem.Name, "NVIDIA") Then
            Set wssx = CreateObject("WScript.Shell")
            msgbox CStr(wssx.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\000" + GPUID + "\HardwareInformation.qwMemorySize"))
        End If
    End If

【问题讨论】:

  • 我们可以提供帮助,但您需要告诉我们到目前为止您已经尝试了什么、您拥有什么代码以及您遇到的问题。您可以edit您的问题以添加更多详细信息。
  • @Mokubai 完成。我什至没有想到您实际上需要代码和更多背景故事等这一事实
  • WScript.Shell 对象根本不支持REG_QWORD,用于读取或写入。您可以尝试改用 WMI,特别是 StdRegProv 类及其 GetQWORDValue() 方法。见this example
  • IE9/CSS 参考暗示了一个 HTA。也许这会有所帮助:stackoverflow.com/questions/68807325/…

标签: vbscript hta


【解决方案1】:

不幸的是,似乎没有直接的方法来检索该值 - 在 HTA 本身内。

我能够获取该值,但是我使用 Powershell 完成了它,执行了命令,将其输出设置为特定文件并读取它。

无论如何,这是我专门针对这个问题提出的实际解决方案

wshell.Run "powershell (Get-ItemPropertyValue 'HKLM:\SYSTEM\ControlSet001\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000' 'HardwareInformation.qwMemorySize') | Out-File -FilePath C:\temp\gpu_mem.txt", 0, true
Set f = fso.OpenTextFile("C:\temp\gpu_mem.txt", 1, False, -1)
gpu_mem = CStr(f.ReadAll)

通过这种方法我直接获取整数并将其传递给VBS

【讨论】:

    猜你喜欢
    • 2011-10-28
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多