我做了一个NT服务程序,要读取注册表中的一些信息,我将信息写入HKey_Current_User下的SoftWare键下的一个自建的子目录下。形如:
HKEY_CURRENT_USER\Software\xxxxx
有一个单独的参数设置程序。可是我发现自已在设置程序中设置的参数,在Windows系统服务中读不出来。后来发现其原因如下。
系统服务运行在不同的用户帐户下,
HKey_Current_User是HKey_Users结构中某些键的一个别名。系统服务的注册键是在HKey_Users\.Default下。注册表中其它的主键是共亨的,只的HKey_Current_User是根据不同的用户映射到不同的地方。
如果在想要给的系统服务一个真正的用户帐号,需要在服务面板上设置。
RootKey := HKEY_CURRENT_USER;
后来,我改在HKEY_LOCAL_MACHINE\Software\xxxxx进行操作了。