在不同Windows版本上写入注册表问题

问题描述

| 问题:我需要在我的简单应用程序(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目录下创建。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...