在VBScript中仅使用FileSystemObject,如何确定操作系统的处理器体系结构?

弗兰克·莱斯尼亚克

在Windows RT上的VBScript中,正在运行的脚本只能访问三个COM对象,其中一个是Scripting.FileSystemObject

如何仅使用FileSystemObject确定操作系统的处理器体系结构(在本例中为ARM)?

通常我会查询HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment-> PROCESSOR_ARCHITECTURE,或者我会WScript.Shell用来获取系统级环境变量PROCESSOR_ARCHITECTURE但是,在这种情况下,我无法使用常规技术。

注意:我曾考虑过使用Scripting.FileSystemObject来获取的文件版本ntoskrnl.exe,这会告诉我我使用的是Windows版本6.3。然后在尝试创建WScript.Shell对象并失败后,假设我必须在ARM Windows RT设备上。但是,这感觉很草率。已经有一段时间了,但是我已经看到了防病毒干扰了实例化VBScript中对象的能力的情况,我希望这段代码是准确/可靠的。

弗兰克·莱斯尼亚克

基于此答案,我能够构建一个健壮的VBScript函数,该函数从可执行文件的PE标头读取“计算机类型”。

功能和它的先决条件是太长,张贴在这里,但我已经在一个名为增加他们GetExecutableProcessorArchitectureFromFile.vbs我的GitHub仓库

使用该函数GetExecutableProcessorArchitectureFromFile(),我们可以使用以下代码获取Windows RT(或其他任何Windows操作系统)上的操作系统处理器体系结构:

' Note: it's best to get the Windows path programmatically; however, the scope of doing so is outside the scope of this question
strWindowsPath = "C:\Windows"
intReturnCode = GetExecutableProcessorArchitectureFromFile(strOSProcessorArchitecture, strWindowsPath & "\explorer.exe")
If intReturnCode >= 0 Then
    WScript.Echo("OS Processor Architecture=" & strOSProcessorArchitecture)
End If

我已经在Intel IA-32(32位x86),AMD64 / Intel x86-x84(x64),ARM(32位),ARM64,Alpha,PowerPC和MIPS可执行文件上测试了此技术。


注意:我最终使用%WINDIR%\explorer.exe了Windows XP,因为在所有支持VBScript的Windows版本中都存在explorer.exe,一直到运行VBScript 5.1的Windows 95为止我比检查更好,C:\Windows\System32\ntoskrnl.exe因为如果VBScript的进程恰好以Windows-on-Windows(WOW)进程的形式运行,例如在64位上的32位cscript.exe,则在此系统目录下将无法访问ntoskrnl.exe。视窗。这是因为Windows在这种情况下会将32位VBScript进程重定向到C:\ Windows \ SYSWOW64 \ ntoskrnl.exe,该文件不存在。SYSWOW64文件夹是64位Windows上32位进程的WOW64重定向路径。


注2:如果有人需要为如何以编程方式获得Windows路径的指针,看GetWindowsPath.vbs我的GitHub仓库

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

确定未安装操作系统的CPU体系结构

来自分类Dev

在ARM体系结构中不同的处理器模式下如何使用内核堆栈?

来自分类Dev

如何查找已安装的操作系统的体系结构

来自分类Dev

使用PowerShell确定处理器体系结构的一种简单的跨平台方法是什么?

来自分类Dev

如何根据开发人员的操作系统体系结构在Visual Studio中复制文件?

来自分类Dev

如何获得izpack安装程序以根据操作系统体系结构正确限制文件集

来自分类Dev

语言特定的体系结构/处理器

来自分类Dev

Unattend.xml文件-处理器体系结构

来自分类Dev

如何为许多处理器体系结构引用.dll?

来自分类Dev

在SSIS中使用Web服务会导致“处理器体系结构之间的不匹配”

来自分类Dev

在SSIS中使用Web服务会导致“处理器体系结构之间的不匹配”

来自分类Dev

多处理器系统中的操作系统启动

来自分类Dev

无法在Windows 10上激活Credential Guard:未知操作系统,操作系统体系结构失败

来自分类Dev

如何使用仅具有数字输出的批处理查找OS体系结构?

来自分类Dev

如何使用Java确定操作系统?

来自分类Dev

Xcode 6:为每个体系结构设置预处理器宏

来自分类Dev

处理器体系结构问题(x86与任何CPU)

来自分类Dev

Xcode 7:为每个体系结构设置预处理器宏

来自分类Dev

我应将项目的目标处理器体系结构更改为什么?

来自分类Dev

磁盘读写速度是否受处理器体系结构影响?

来自分类Dev

GCC只能为一种特定的体系结构和操作系统编译代码吗?

来自分类Dev

操作系统是基于ISA还是基于微体系结构而有所不同?

来自分类Dev

所引用的SDK“ SQLite.UWP.2015”不支持正在构建的项目“任何CPU”的处理器体系结构。在Visual Studio 2017中

来自分类Dev

基于RESTful API的系统的体系结构决策和错误处理(使用Nginx + Redis)

来自分类Dev

警告MSB3270体系结构不匹配/ AL1073针对其他处理器

来自分类Dev

如何仅使用javascript中的document.createElement来构建此Web体系结构(div中的div)

来自分类Dev

如何确定.bash_profile中的操作系统?

来自分类Dev

iOS:用于操作系统版本检查的预处理器

来自分类Dev

更换处理器和主板,但保持相同的操作系统设置等

Related 相关文章

  1. 1

    确定未安装操作系统的CPU体系结构

  2. 2

    在ARM体系结构中不同的处理器模式下如何使用内核堆栈?

  3. 3

    如何查找已安装的操作系统的体系结构

  4. 4

    使用PowerShell确定处理器体系结构的一种简单的跨平台方法是什么?

  5. 5

    如何根据开发人员的操作系统体系结构在Visual Studio中复制文件?

  6. 6

    如何获得izpack安装程序以根据操作系统体系结构正确限制文件集

  7. 7

    语言特定的体系结构/处理器

  8. 8

    Unattend.xml文件-处理器体系结构

  9. 9

    如何为许多处理器体系结构引用.dll?

  10. 10

    在SSIS中使用Web服务会导致“处理器体系结构之间的不匹配”

  11. 11

    在SSIS中使用Web服务会导致“处理器体系结构之间的不匹配”

  12. 12

    多处理器系统中的操作系统启动

  13. 13

    无法在Windows 10上激活Credential Guard:未知操作系统,操作系统体系结构失败

  14. 14

    如何使用仅具有数字输出的批处理查找OS体系结构?

  15. 15

    如何使用Java确定操作系统?

  16. 16

    Xcode 6:为每个体系结构设置预处理器宏

  17. 17

    处理器体系结构问题(x86与任何CPU)

  18. 18

    Xcode 7:为每个体系结构设置预处理器宏

  19. 19

    我应将项目的目标处理器体系结构更改为什么?

  20. 20

    磁盘读写速度是否受处理器体系结构影响?

  21. 21

    GCC只能为一种特定的体系结构和操作系统编译代码吗?

  22. 22

    操作系统是基于ISA还是基于微体系结构而有所不同?

  23. 23

    所引用的SDK“ SQLite.UWP.2015”不支持正在构建的项目“任何CPU”的处理器体系结构。在Visual Studio 2017中

  24. 24

    基于RESTful API的系统的体系结构决策和错误处理(使用Nginx + Redis)

  25. 25

    警告MSB3270体系结构不匹配/ AL1073针对其他处理器

  26. 26

    如何仅使用javascript中的document.createElement来构建此Web体系结构(div中的div)

  27. 27

    如何确定.bash_profile中的操作系统?

  28. 28

    iOS:用于操作系统版本检查的预处理器

  29. 29

    更换处理器和主板,但保持相同的操作系统设置等

热门标签

归档