问题描述
|
问题:我需要在我的简单应用程序(MS VC ++项目)中创建注册表项,但是此简单应用程序可以在不同模式下工作:
如果我使用WinXP启动它,它将作为服务启动
如果我使用Vista或Win7启动它,它将作为控制台窗口启动
在WinXP上,我可以安装服务,也可以写到“ 0”部分。没关系。
但是,当我试图在Vista / Win7上启动我的应用程序,并且试图将某些数据保存到“ 0”注册表部分时,出现了错误消息,提示我无法执行此操作。
问题:谁能告诉我,在所有这些系统WinXP,Vista,Seven上,我可以在哪里在注册表中写入(创建)一些数据(键)。
PS。
HKEY_CURRENT_USER
部分我无法使用,因为服务正在它自己的会话上工作,因此用户在HKEY_CURRENT_USER
中存储的数据将无法使用。
PSS。我无法授予该应用程序的管理员权限以保存一些数据。我需要注册表中的另一个“文件夹”才能在其中“免费”编写。
代码示例:
REGKEY service(HKEY_LOCAL_MACHINE,TEXT(\"System\\\\CurrentControlSet\\\\Services\"),KEY_READ,REGKEY::open);
REGKEY app(service,TEXT(\"my_application\"),REGKEY::create);
// here comes error
解决方法
UAC禁止在Visa / 7/2008上访问HKLM,因此,如果不提升管理权限,您的应用程序将无法访问其中包含的密钥。
如果您不能使用HKCU,那么最好的选择是将数据以您选择的格式存储在磁盘上,该目录由安装程序在具有适当权限的ѭ5目录下创建。