4

在 Windows 7 机器上,我无法读取任何包含分号的注册表值。

例如,如果您有 7-zip,则运行以下命令

SET(MYPATH  [HKEY_LOCAL_MACHINE\\SOFTWARE\\7-Zip;Path])
MESSAGE("MYPATH = ${MYPATH}")

结果是

MYPATH = [HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip;Path]

而不是按照以下线程的实际路径。我认为 cmake 支持包含“;”的注册表路径 在 Windows 7 上坏了。有人可以确认吗?有什么解决方法吗?

4

1 回答 1

7

根据 wiki,您不能使用它SET来查看注册表项的值。仅当您对其进行一些缓存操作时才会读取注册表值。例如,下面应该输出你想要的路径:

GET_FILENAME_COMPONENT(MYPATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\7-Zip;Path]"
                       ABSOLUTE CACHE)
MESSAGE("MYPATH = ${MYPATH}")
于 2009-12-26T16:21:16.890 回答