如何让C++程序修改win7的注册表?

时间:2022-09-04 14:03:57
hi,
我最近写了一个小程序,需要修改注册表。相关的部分如下所示:

CRegKey cKey;
if(ERROR_SUCCESS == cKey.Open(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.htm\\UserChoice"), KEY_READ))
cout << "opened!" << endl;
if(ERROR_SUCCESS == cKey.SetStringValue(_T("Progid"), _T("110"), REG_SZ))
cout << "setted" << endl;
getchar();
return 0;

该工程使用VS2008,我同时修改了manifest文件,将level改为“requireAdministrator”。
但是当我在win7下运行这段程序的时候,只出现了“opened!”的提示,说明我只打开了该键值,却没有改变其中的内容。
请问有什么办法能让我在程序中成功修改win7的注册表么?
谢谢!

6 个解决方案

#1


额…………
你用KEY_READ权限打开,还想往里面写东西,windows的权限管理不是只吃干饭的

#2


OpenProcessToken、AdjustTokenPrivileges开启相应权限

#3


1L的我错了。。。

#4


KEY_READ | KEY_WRITE

#5


KEY_READ | KEY_WRITE
哈哈 LZ和1L 好可爱~~

#6


Win7对权限相对XP加强了.
好多东西都要让你在超级管理员登陆才能动,而普通管理员只处处碰壁了.

#1


额…………
你用KEY_READ权限打开,还想往里面写东西,windows的权限管理不是只吃干饭的

#2


OpenProcessToken、AdjustTokenPrivileges开启相应权限

#3


1L的我错了。。。

#4


KEY_READ | KEY_WRITE

#5


KEY_READ | KEY_WRITE
哈哈 LZ和1L 好可爱~~

#6


Win7对权限相对XP加强了.
好多东西都要让你在超级管理员登陆才能动,而普通管理员只处处碰壁了.