如何在Vista下通过编程修改注册表HKEY_LOCAL_MACHINE下的任何键值

shaojun1314 2007-02-06 04:36:20
显然,由于Vista系统的限制HKEY_LOCAL_MACHINE,下的任何键值是不允许没有管理员权限的程序修改的,如果我在user用户下要操作这个下面的value,我应该怎么做呢?
给出具体做法,分我愿意全部奉送,不够再加200。。。。
最好可以做一个小程序实现更改machine下注册表的值,然后给我看看代码,谢谢!
...全文
1285 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
龙凤呈祥焱 2008-05-03
  • 打赏
  • 举报
回复
用Manifest也可以实现啊。
具体上网搜索一下吧。

另外,即便是XP,2000,2003,修改HKEY_LOCAL_MACHINE下的键值也是需要管理员权限的。不然会返回错误。
birchlin 2008-05-03
  • 打赏
  • 举报
回复
竟然看到了一个钻石!

LZ,说说你意图,做什么?具体点,大家好帮助啊!
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
我也想知道,正在找這方面的資料~~~~~
ssli 2008-04-01
  • 打赏
  • 举报
回复
我现在也需要知道怎么处理这种情况,不知有哪位高手知道?
mjx1981 2007-02-09
  • 打赏
  • 举报
回复
为什么我用CoCreateInstanceAsAdmin返回的总是负值?
xyxfly 2007-02-09
  • 打赏
  • 举报
回复
vista下需要提升权限
另外需要diable uac
shaojun1314 2007-02-08
  • 打赏
  • 举报
回复
蒋大哥的函数我不会用,哪个师傅交一下,我应该给那个函数的形参送什么值?
BIND_OPTS3 ??没有定义,应该包含哪些头文件和库?
在线等。。。
谢谢各位!准备送大分。。。。
jiangshi99 2007-02-08
  • 打赏
  • 举报
回复
两个5星一个四星啊,拜一下~~~~~~~~~~
shaojun1314 2007-02-08
  • 打赏
  • 举报
回复
好,我马上去试。。。
随便问一下,如何编码实现自己的程序在Administrator的权限下运行?
flyelf 2007-02-08
  • 打赏
  • 举报
回复
蒋老大的方法可以试试
yjgx007 2007-02-08
  • 打赏
  • 举报
回复
Try to use Shell programming.
蒋晟 2007-02-08
  • 打赏
  • 举报
回复
use CoCreateInstanceAsAdmin to create a COM object
HRESULT CoCreateInstanceAsAdmin(HWND hwnd, REFCLSID rclsid, REFIID riid, void ** ppv) {
BIND_OPTS3 bo;
WCHAR wszCLSID[50];
WCHAR wszMonikerName[300];

StringFromGUID2(rclsid, wszCLSID, sizeof(wszCLSID)/sizeof(wszCLSID[0]));
HRESULT hr = StringCchPrintf(wszMonikerName,
sizeof(wszMonikerName)/sizeof(wszMonikerName[0]),
L"Elevation:Administrator!new:%s",
wszCLSID);
if (FAILED(hr))
return hr;
memset(&bo, 0, sizeof(bo));
bo.cbStruct = sizeof(bo);
bo.hwnd = hwnd;
bo.dwClassContext = CLSCTX_LOCAL_SERVER;
return CoGetObject(wszMonikerName, &bo, riid, ppv);
}
wangk 2007-02-08
  • 打赏
  • 举报
回复
http://msdn2.microsoft.com/en-us/library/aa480152.aspx
shaojun1314 2007-02-08
  • 打赏
  • 举报
回复
自己顶一下,求解。。。
gaooo 2007-02-07
  • 打赏
  • 举报
回复
gz
i_love_pc 2007-02-07
  • 打赏
  • 举报
回复
还没见过vista
DentistryDoctor 2007-02-07
  • 打赏
  • 举报
回复
目前没有解决方案。
seraphliu 2007-02-07
  • 打赏
  • 举报
回复
DWORD dwDisp;
HKEY hKey = NULL;
HRESULT hRes;

TCHAR szValue[1024];
_tcscpy(szValue,TEXT("Test Value"));

hRes = ::RegCreateKeyEx( HKEY_LOCAL_MACHINE, _T("SOFTWARE"), 0, NULL,
REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE, NULL, &hKey, &dwDisp);
if (hRes == ERROR_SUCCESS )
{
hRes = ::RegSetValueEx( hKey, _T("RegTest"), 0, REG_SZ, (LPBYTE)szValue, (lstrlen(szValue) + 1) * sizeof(TCHAR) );
::RegCloseKey( hKey );
}
这段代码是在HKEY_LOCAL_MACHINE\SOFTWARE下添加了RegTest=“Test Value”的效果,希望对楼主有用。
seraphliu 2007-02-07
  • 打赏
  • 举报
回复
你是要改什么?是HKEY_LOCAL_MACHINE下的项还是key?项好像是不能改的,但是key是可以随便添加,删除,修改的。
BeRoy 2007-02-07
  • 打赏
  • 举报
回复
vista ,只能纯支持一下了...
加载更多回复(1)

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧