开发者

Writing to registry problem on different Windows versions

开发者 https://www.devze.com 2023-03-09 11:23 出处:网络
Problem: I need to create registry keys in my simple application (MS VC++ project), but this simple application could work in different modes:

Problem: I need to create registry keys in my simple application (MS VC++ project), but this simple application could work in different modes:

  • if I launch it with WinXP, it's started as a service
  • if I launch it with Vista or Win7, it's started as a console window

On WinXP, I could install service and also I could write to HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\ section. It's ok.

But, when I'm trying to launch my application on Vista/Win7, and it trying to save some data to HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\ registry section, I get the error message, that I can't do that.

Question: Could anyone tell me, where I could write (create) some data (keys) in registry on all of this systems WinXP, Vista, Seven.


PS. HKEY_CURRENT_USER section I'm unable to use, because, services are working on it's own sessions, so data stored by user in HKEY_CURRENT_USER will not be accessible to service.

PSS. I'm unable to give the administrator rights to the application for save some data. I need another "folder" in registry to write there "for free".


Code examples:

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 prevents access to HKLM on Visa/7/2008, so without elevation to administrative privileges your application cannot access keys contained within it.

If you can't use HKCU then your best bet is to store the data on disk in a format of your choice, in a directory under CommonApplicationData created by your installer with the appropriate permissions.

0

精彩评论

暂无评论...
验证码 换一张
取 消