[CMake] How to read a registry key?
Anton Deguet
anton.deguet at jhu.edu
Thu Sep 7 12:13:51 EDT 2006
Bill,
I had some success with the key expansion but I haven't been able to do
what I need. Basically, I would like to get the un-expanded content of
the user path, i.e. not the expanded path (user and system) which can be
found using $ENV{PATH}.
I tried the following code, i.e. adding two variables, one using the
other:
SET(CISST_PATH ${EXECUTABLE_OUTPUT_PATH} ${LIBRARY_OUTPUT_PATH})
SET(CISST_PATH_REG_KEY "HKEY_CURRENT_USER\\Environment;CISST_PATH")
EXEC_PROGRAM(${CMAKE_COMMAND}
ARGS "-E write_regv \"${CISST_PATH_REG_KEY}\"
\"${CISST_PATH}\"")
SET(OTHER_PATH_REG_KEY "HKEY_CURRENT_USER\\Environment;OTHER_PATH")
SET(OTHER_PATH "c:/prg;%CISST_PATH%")
EXEC_PROGRAM(${CMAKE_COMMAND}
ARGS "-E write_regv \"${OTHER_PATH_REG_KEY}\"
\"${OTHER_PATH}\"")
GET_FILENAME_COMPONENT(TMP "[HKEY_CURRENT_USER\
\Environment;OTHER_PATH]/dummy.dum" PATH)
MESSAGE("${TMP}")
At that point, everything looks great and I can check the results with
"reg.exe", the expansion works ...
Now, if I try to retrieve the user path using
GET_FILENAME_COMPONENT(TMP "[HKEY_CURRENT_USER\
\Environment;PATH]/dummy.dum" PATH)
TMP is set to "/registry" ... Any explanation or better solution to
just retrieve the value as a string?
On Wed, 2006-09-06 at 20:55 -0400, William A. Hoffman wrote:
> At 05:36 PM 9/6/2006, Anton Deguet wrote:
> >Hello,
> >
> >I have found that using EXEC_PROGRAM with ${CMAKE_COMMAND} -E I can
> >write/remove a key in the Windows registry but I haven't figured out how
> >to read a key. Is there a simple solution for that?
>
> Sure, but it seems not to be documented....
> Several commands including GET_FILENAME_COMPONENT will expand things
> like this:
>
> "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\2.0;JavaHome]/bin"
>
> You can use this to read registry values. I will add some docs in
> the morning.
>
> -Bill
>
> _______________________________________________
> CMake mailing list
> CMake at cmake.org
> http://www.cmake.org/mailman/listinfo/cmake
--
Anton Deguet <anton.deguet at jhu.edu>
ERC CISST Johns Hopkins University
More information about the CMake
mailing list