以下是引用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;
}