| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1027 人关注过本帖
标题:修改注册表的项!
只看楼主 加入收藏
hksyw
Rank: 1
等 级:新手上路
帖 子:171
专家分:6
注 册:2006-2-21
收藏
得分:0 
qlong0728
我还是不懂!希望能给出代码!以供研究!

我只想用VB改注册表项的名子!
比如说 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal
我想改成 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal1
就这么简单!


菜鸟也想飞得更高!


2007-08-31 08:32
hksyw
Rank: 1
等 级:新手上路
帖 子:171
专家分:6
注 册:2006-2-21
收藏
得分:0 
能帮一下吗?

2007-08-31 09:29
multiple19O2
Rank: 1
等 级:新手上路
帖 子:326
专家分:0
注 册:2007-8-29
收藏
得分:0 

一般的封装者不会考虑到修改名称这个的……

[此贴子已经被作者于2007-8-31 10:15:14编辑过]

2007-08-31 10:14
hksyw
Rank: 1
等 级:新手上路
帖 子:171
专家分:6
注 册:2006-2-21
收藏
得分:0 
有什么方法能得到吗?

2007-08-31 10:23
slore
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1108
专家分:0
注 册:2005-7-1
收藏
得分:0 
把它里面的内容获得,写入带1的,然后del掉……

快上课了……
2007-08-31 10:27
multiple19O2
Rank: 1
等 级:新手上路
帖 子:326
专家分:0
注 册:2007-8-29
收藏
得分:0 
以下是引用hksyw在2007-8-31 10:23:00的发言:
有什么方法能得到吗?

貌似没有

百度到这些结果 你将就着看

如何给注册表的一个键值改名?楼主kevin3(可以包含中文字符)2002-10-03 17:40:43 在 VC/MFC / 基础类 提问
key或者value??????????


有高手吗?谢谢!

1 楼playguy(playguy)回复于 2002-10-03 18:13:57 得分 7

只能先删除RegDeleteKey,然后创建RegCreateKey.

2 楼gyf(NetSwimer)回复于 2002-10-03 20:08:26 得分 7

RegDeleteKey,RegCreateKey

3 楼2ndboy(贱男春)回复于 2002-10-07 22:10:24 得分 6

对,要枚举这个key下面的所有值,然后都复制过去,最后删除旧key



怎样给注册表项改名?谢谢!
问?:
是编写代码更改。
答!: 1:
先CreateKey
拷贝key下的所有项,值/数据
然后DeleteKey原来的

如果是value
SetValue新的
DeleteValue旧的


高手写的程序也不过是这样

// Reg.h: interface for the CReg class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_REG_H__9E88130A_F001_48DD_A950_2861BB96A6B7__INCLUDED_)
#define AFX_REG_H__9E88130A_F001_48DD_A950_2861BB96A6B7__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CReg
{
private:
HKEY m_hKey;
public:
CReg();
CReg(HKEY hKey,LPCTSTR lpSubKey);
LONG OpenKey(HKEY hKey,LPCTSTR lpSubKey);
LONG DelSubKey(LPCTSTR lpSubKey);
LONG CloseKey();
LONG CreateKey(HKEY hKey,LPCTSTR lpSubKey);
LONG DeleteValue(LPCTSTR lpValueName);
LONG SetValue(LPCTSTR lpValueName,DWORD dwType,LPCTSTR lpData);
LONG QueryValue(LPCTSTR lpValueName,CString& Buffer);
LONG SetStartUp();
LONG StopStartUp();
HKEY GetKey(){return m_hKey;}
virtual ~CReg();
};

#endif // !defined(AFX_REG_H__9E88130A_F001_48DD_A950_2861BB96A6B7__INCLUDED_)


// Reg.cpp: implementation of the CReg class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Reg.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CReg::CReg()
{
m_hKey=0;
}

CReg::CReg(HKEY hKey,LPCTSTR lpSubKey)
{
m_hKey=0;
RegOpenKey(hKey,lpSubKey,&m_hKey);
}

CReg::~CReg()
{
CloseKey();
}

LONG CReg::OpenKey (HKEY hKey,LPCTSTR lpSubKey)
{
ASSERT(!m_hKey);
LONG result=RegOpenKey(hKey,lpSubKey,&m_hKey);
return result;
}

LONG CReg::DelSubKey(LPCTSTR lpSubKey)
{
ASSERT(m_hKey);
LONG result=RegDeleteKey(m_hKey,lpSubKey);
return result;
}

LONG CReg::CloseKey()
{
LONG result=RegCloseKey(m_hKey);
return result;
}

LONG CReg::CreateKey (HKEY hKey,LPCTSTR lpSubKey)
{
ASSERT(!m_hKey);
LONG result=RegCreateKey (hKey,lpSubKey,&m_hKey);
return result;
}

LONG CReg::DeleteValue(LPCTSTR lpValueName)
{
ASSERT(m_hKey);
LONG result=RegDeleteValue(m_hKey,lpValueName);
return result;
}

LONG CReg::SetValue(LPCTSTR lpValueName,DWORD dwType,LPCTSTR lpData)
{
ASSERT(m_hKey);
DWORD cbData;
switch (dwType)
{
case REG_SZ:
cbData=strlen(lpData);
break;
case REG_DWORD:
cbData=4;
break;
case REG_BINARY:
ASSERT(0);
}
LONG result=RegSetValueEx(m_hKey,lpValueName,NULL,dwType,(CONST BYTE*)lpData,cbData);
return result;
}

LONG CReg::QueryValue(LPCTSTR lpValueName,CString& Buffer)
{
ASSERT(m_hKey);
DWORD dwType=0;
DWORD dwSize=0;
DWORD cbData=0;
LONG result=RegQueryValueEx(m_hKey,lpValueName,NULL,&dwType,(BYTE*)0,&dwSize);
if(result==ERROR_SUCCESS)
{
if(dwType==REG_SZ)
RegQueryValueEx(m_hKey,lpValueName,NULL,&dwType,(BYTE*)Buffer.GetBuffer(dwSize),&dwSize);
if(dwType==REG_DWORD)
{
RegQueryValueEx(m_hKey,lpValueName,NULL,&dwType,(BYTE*)&cbData,&dwSize);
Buffer.Format ("%d",cbData);
}
ASSERT(dwType!=REG_BINARY);
}
return result;
}

LONG CReg::SetStartUp ()
{
HKEY oldhkey=this->GetKey();
CString str;
this->OpenKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
GetModuleFileName(NULL,str.GetBuffer (128),128);
LONG result=this->SetValue(::AfxGetAppName(),REG_SZ,str);
m_hKey=oldhkey;
return result;
}

LONG CReg::StopStartUp ()
{
HKEY oldhkey=this->GetKey();
this->OpenKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
LONG result=this->DeleteValue(::AfxGetAppName());
m_hKey=oldhkey;
return result;
}
2007-08-31 10:28
hksyw
Rank: 1
等 级:新手上路
帖 子:171
专家分:6
注 册:2006-2-21
收藏
得分:0 
看不懂!
要不谁能给我个教程!让我看看,我从早上7点开始找答案,到目前为止还找不到

2007-08-31 10:40
multiple19O2
Rank: 1
等 级:新手上路
帖 子:326
专家分:0
注 册:2007-8-29
收藏
得分:0 
以下是引用hksyw在2007-8-31 10:40:02的发言:
看不懂!
要不谁能给我个教程!让我看看,我从早上7点开始找答案,到目前为止还找不到

哪边不懂?该不是全不懂吧?

这样,你先做一个异步复制项的程序,要能遍历所有子键的,然后再修改。

异步:先全部读取 再全部写,而不是边读边写。




http://bbs.bc-cn.net/viewthread.php?tid=166636

《提问的智慧》

—还是不懂—

如果你不是很理解答案,别立刻要求对方解释。象你以前试着自己解决问题时那样(搜索、思考、尝试)去理解它。比方说我回答你:“哦,去启动项看看有没有陌生的启动项目。”这时候你应该打开启动项查看。如果你不懂,可以把看到的信息反溃上来。而不是什么都不做就接着问:“哪些是陌生的启动项目?”

2007-08-31 10:47
hksyw
Rank: 1
等 级:新手上路
帖 子:171
专家分:6
注 册:2006-2-21
收藏
得分:0 
看来我是太菜了!算了不问了

2007-08-31 10:49
快速回复:修改注册表的项!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016698 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved