我最近写了一个小程序,需要修改注册表。相关的部分如下所示:
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的权限管理不是只吃干饭的
你用KEY_READ权限打开,还想往里面写东西,windows的权限管理不是只吃干饭的
#2
OpenProcessToken、AdjustTokenPrivileges开启相应权限
#3
1L的我错了。。。
#4
KEY_READ | KEY_WRITE
#5
KEY_READ | KEY_WRITE
哈哈 LZ和1L 好可爱~~
哈哈 LZ和1L 好可爱~~
#6
Win7对权限相对XP加强了.
好多东西都要让你在超级管理员登陆才能动,而普通管理员只处处碰壁了.
好多东西都要让你在超级管理员登陆才能动,而普通管理员只处处碰壁了.
#1
额…………
你用KEY_READ权限打开,还想往里面写东西,windows的权限管理不是只吃干饭的
你用KEY_READ权限打开,还想往里面写东西,windows的权限管理不是只吃干饭的
#2
OpenProcessToken、AdjustTokenPrivileges开启相应权限
#3
1L的我错了。。。
#4
KEY_READ | KEY_WRITE
#5
KEY_READ | KEY_WRITE
哈哈 LZ和1L 好可爱~~
哈哈 LZ和1L 好可爱~~
#6
Win7对权限相对XP加强了.
好多东西都要让你在超级管理员登陆才能动,而普通管理员只处处碰壁了.
好多东西都要让你在超级管理员登陆才能动,而普通管理员只处处碰壁了.