2013-04-11 54 views
0

试图让使用的AutoIt此注册表项的值,并将其不断失败。我的猜测是由于“,”和/或“。”。在关键名称中,但是我无法在AutoIt文档或其他Google搜索中找到有关此类问题的任何良好信息。我尝试过使用通常的转义字符“\”单独地逃避每一个,也没有运气。AutoIt:任何人都知道此RegRead调用有什么问题?

我已确认键名是正确的,也尝试了完全不同的REG键没有在我的脚本中的奇怪的字符只是为了看看它是否工作正常,从而成功。

Dim $VMWare_Path = RegRead("HKLM\SOFTWARE\VMware, Inc.\VMware Workstation", "InstallPath")

+0

好了,命令'ConsoleWrite(RegRead( “HKEY_CURRENT_USER \ SOFTWARE \苹果电脑公司\ QuickTime的\ LocalUserPreferences”, “FOLDERPATH”)@CR)'和' ConsoleWrite(@error &“”&@extended)'如我所愿地为我工作,所以它必须是您的输入问题,而不是符号。至少有很多条目包括“。”无论如何,在文件夹** ... \ Software \ Classes **中,所以点不能成为问题。您是否尝试用完整字符串替换“HKLM”?之后你的内容是什么'@ error'? 你可能使用带有regedit 32的AutoIt 64 Bit吗? – Samoth 2013-04-12 08:05:31

+0

你检查\ @error ... 成功时,你得到的是什么结果:返回请求的注册表值。 \ @EXTENDED被设置为值$ REG _...的类型。这些类型在“Constants.au3”包含文件中定义。 失败:返回“”,并设置@error标志: 1如果不能打开被请求的键 2如果不能打开被请求的主键 3,如果不能,如果无法打开请求的值 远程连接到注册表 -1 -2如果不支持值类型 – Xenobiologist 2013-04-12 10:25:25

+0

简单。别的东西搞砸了:)。您必须发布额外的代码才能更深入地研究它,因为您已将代码标记放入应该按预期方式工作。 – Mechaflash 2013-04-15 18:29:21

回答

0

更新: 好了,该解决方案竟然是我需要从不同的操作系统版本不同的注册表节点阅读。最终代码:

Local $VMWPath 

if @CPUArch = "X64" Then 
    ;x64 Key 
    $VMWPath = RegRead("HKLM\SOFTWARE\Wow6432node\VMware, Inc.\VMware Workstation", "InstallPath") 
Else 
    ;x86 Key 
    $VMWPath = RegRead("HKLM\SOFTWARE\VMware, Inc.\VMware Workstation", "InstallPath") 
EndIf 
相关问题