Ama*_*nth 4 registry inno-setup batch-file 32bit-64bit
在我的批处理文件中,我正在执行一个简单的命令来获取VirtualBox安装路径.
REG QUERY HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\VirtualBox /v InstallDir
Run Code Online (Sandbox Code Playgroud)
当我从命令行执行批处理文件时,它会产生奇迹,但如果我从Inno Setup启动相同的批处理文件,则不会给出任何值.
经过一段时间的测试,我发现它只是在从Inno Setup启动批处理文件时才在注册表的32位部分进行搜索.
为了测试这个理论,我查看了位于那里的32位注册表:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\NuGet\Repository
Run Code Online (Sandbox Code Playgroud)
在我的批处理文件中,我输入以下命令(注意我没有指定Wow6432Node,这应该是错误的)
REG QUERY HKEY_LOCAL_MACHINE\SOFTWARE\NuGet\Repository\
Run Code Online (Sandbox Code Playgroud)
实际上,从命令行运行批处理文件时,它找不到注册表项.但是,当从Inno Setup启动相同的批处理文件时,它会发现\ NuGet\repository就好了.
现在的问题是.如何使用我的批处理文件获取64位注册表项(Virtual Box),以便它可以在命令行和Inno Setup中运行?
这是我最终做的事情,因为我没有时间穿上它.它适用于所有情况,除非Virtual Box 64位安装在非默认文件夹中并且批处理文件在32位环境中调用.
set vb_path=""
for /f "tokens=1-2*" %%A in ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\VirtualBox" /v InstallDir') do (
set vb_path="%%C\VBoxManage.exe"
)
IF %vb_path%=="" (
REM Virtual Box not found. Search in 32 bit virtual box from 64 bit cmd
for /f "tokens=1-2*" %%A in ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Oracle\VirtualBox" /v InstallDir') do (
set vb_path="%%C\VBoxManage.exe"
)
)
IF %vb_path%=="" (
REM Still not found. Must be 32 bit env. with 64 bit Virtual Box
REM Search in default installation folders.
IF EXIST "%ProgramFiles(x86)%\Oracle\VirtualBox\VBoxManage.exe" (
set vb_path="%ProgramFiles(x86)%\Oracle\VirtualBox\VBoxManage.exe"
) ELSE (
IF EXIST "%ProgramW6432%\Oracle\VirtualBox\VBoxManage.exe" (
set vb_path="%ProgramW6432%\Oracle\VirtualBox\VBoxManage.exe"
)
)
)
IF %vb_path%=="" (
ECHO VirtualBox folder not found in registry or default installation path!
EXIT /b 1
)
Run Code Online (Sandbox Code Playgroud)
小智 5
你可以调用类似的东西
REG QUERY HKLM\SOFTWARE /reg:32
Run Code Online (Sandbox Code Playgroud)
或者
REG QUERY HKLM\SOFTWARE /reg:64
Run Code Online (Sandbox Code Playgroud)
明确针对 32 位或 64 位注册表。
调用时没有提到这一点REG /?,但我在这里找到了它:https : //support.microsoft.com/en-us/help/948698/you-cannot-use-the-reg-exe-utility-to-access-64 -bit-registry-keys-on-a
我在 Windows 7 Pro 64 位上使用它。
| 归档时间: |
|
| 查看次数: |
4890 次 |
| 最近记录: |