注册表操作
来源:互联网 发布:苹果手机快手软件 编辑:程序博客网 时间:2024/05/12 20:43
Windows定义了一个文件路径的最长长度的常量MAX_PATH(值为260),我们可以用它来建立字符串缓冲区;
CRegKey提供了对系统注册表的操作方法,通过CRegKey类,可以方便的
打开注册表的某个分支或子键 CRegKey::Open
修改一个键的键值 CRegKey::SetValue
查询某个键的键值 CRegKey::QueryValue
操作完成之后,关闭子键 CRegKey::Close
要想使用CRegKey类,需要包含头文件atlbase.h
2.常用操作方法
LONG Open( HKEY hKeyParent, LPCTSTR lpszKeyName, REGSAM samDesired = KEY_ALL_ACCESS );
LONG QueryValue( DWORD& dwValue, LPCTSTR lpszValueName );
LONG QueryValue( LPTSTR szValue, LPCTSTR lpszValueName, DWORD* pdwCount )
LONG SetValue( DWORD dwValue, LPCTSTR lpszValueName );
LONG SetValue( LPCTSTR lpszValue, LPCTSTR lpszValueName = NULL );
LONG SetValue( HKEY hKeyParent, LPCTSTR lpszKeyName, LPCTSTR lpszValue, LPCTSTRlpszValueName = NULL );
LONG DeleteValue( LPCTSTR lpszValue );
LONG Create( HKEY hKeyParent, LPCTSTR lpszKeyName, LPTSTR lpszClass = REG_NONE, DWORDdwOptions = REG_OPTION_NON_VOLATILE, REGSAMsamDesired = KEY_ALL_ACCESS, LPSECURITY_ATTRIBUTESlpSecAttr = NULL, LPDWORDlpdwDisposition = NULL );
LONG DeleteSubKey( LPCTSTR lpszSubKey );
LONG Close( );
LONG RegFlushKey( HKEY hKey );
3、常见应用
获取系统注册用户名(系统安装时名称)
void CSystemInfoDlg::OnBtnRegName() {// TODO: Add your control notification handler code hereCString strPath="SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";//注册表子键路径CRegKey regKey;//定义注册表类对象LONG lResult;//LONG型变量——反应结果lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);//读取键值成功返回ERROR_SUCCESS//打开注册表主键if (lResult!=ERROR_SUCCESS)//读取键值不成功{AfxMessageBox("错误:无法查询有关的注册表信息");return;}char chRegisteredName[30];DWORD dwSize=30;regKey.QueryValue(chRegisteredName,"RegisteredOwner",&dwSize);//获取RegisteredOwner的值m_strRegOwner=chRegisteredName;UpdateData(FALSE);regKey.Close();//关闭注册表}
LONG QueryValue( LPTSTR szValue, LPCTSTR lpszValueName, DWORD* pdwCount )
szValue:字符串数据类型的键值
lpszValueName:所读取键值项的名称
pdwCount:字符串大小
成功读取注册表中某键值项的键值,成功返回ERROR_SUCCESS;失败返回错误值
注意第三个参数,为存储该键值的大小,应根据实际情况设定比较合理的空间,这里为30个字符。
获取系统注册用户名
获取HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion子键中获取RegisteredOwner的键值。
获取注册单位名
void CSystemInfoDlg::OnButton1() {CRegKey regKey;CString strPath="SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";LONG lResult;lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);if (lResult!=ERROR_SUCCESS){AfxMessageBox("错误:无法查询有关的注册表信息");return;}char chRegisteredName[30];DWORD dwSize=30;regKey.QueryValue(chRegisteredName,"RegisteredOrganization",&dwSize);//获取RegisteredOwner的值m_strRegisteredOrganization=chRegisteredName;UpdateData(FALSE);regKey.Close();//关闭注册表}
获取HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion子键中获取RegisteredOrganization的键值。
获取操作系统安装序列号
获取HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion子键中获取ProductName的键值。
void CSystemInfoDlg::OnButton4() {CString strPath="SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";CRegKey regKey;LONG lResult;lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);if (lResult!=ERROR_SUCCESS){AfxMessageBox("错误:无法查询有关的注册表信息");return;}char chProductName[50];DWORD dwSize=50;regKey.QueryValue(chProductName,"ProductName",&dwSize);m_strProductName=chProductName;UpdateData(FALSE);regKey.Close();}
获取IE版本号
获取HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer子键中获取Version的键值。
void CSystemInfoDlg::OnButton5() {CString strPath="SOFTWARE\\Microsoft\\Internet Explorer";CRegKey regKey;LONG lResult;lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);if (lResult!=ERROR_SUCCESS){AfxMessageBox("错误:无法查询有关的注册表信息");return;}char chIEVersion[50];DWORD dwSize=50;regKey.QueryValue(chIEVersion,"Version",&dwSize);m_strIEVersion=chIEVersion;UpdateData(FALSE);regKey.Close();}
获取Windows的版本号
获取HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion子键中获取CurrentVersion的键值。
void CSystemInfoDlg::OnButton6() {CString strPath="SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";CRegKey regKey;LONG lResult;lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);if (lResult!=ERROR_SUCCESS){AfxMessageBox("错误:无法查询有关的注册表信息");return;}char chCurrentVersion[50];DWORD dwSize=50;regKey.QueryValue(chCurrentVersion,"CurrentVersion",&dwSize);m_strCurrentVersion=chCurrentVersion;UpdateData(FALSE);regKey.Close();}
通过GetVersionEx()函数可以得到OSVERSIONINFO数据结构,该结构中的dwMajorVersion与dwMinorVersion即是版本号(主副版本号)
获取Windows内建号
void CSystemInfoDlg::OnButtonBuildNumber() {CString strPath="SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";CRegKey regKey;LONG lResult;lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);if (lResult!=ERROR_SUCCESS){AfxMessageBox("错误:无法查询有关的注册表信息");return;}char chCurrentBuildNumber[50];DWORD dwSize=50;regKey.QueryValue(chCurrentBuildNumber,"CurrentBuildNumber",&dwSize);m_strBuildNo=chCurrentBuildNumber;UpdateData(FALSE);regKey.Close();}
获取Windows的版本名称
void CSystemInfoDlg::OnBtnCsdVersion() {CString strPath="SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";CRegKey regKey;LONG lResult;lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);if (lResult!=ERROR_SUCCESS){AfxMessageBox("错误:无法查询有关的注册表信息");return;}char chCSDVersion[50];DWORD dwSize=50;regKey.QueryValue(chCSDVersion,"CSDVersion",&dwSize);m_strCSDVersion=chCSDVersion;UpdateData(FALSE);regKey.Close();}
通过GetVersionEx()函数可以得到OSVERSIONINFO数据结构,该结构中的CSDVersion即是Windows的版本名称
获取桌面文件夹的位置
获取HKEY_CURRENT_USER\software\Microsoft\Windows\Explorer\Shell Folders子键中获取Desktop的键值。
void CSystemInfoDlg::OnButton9() {CString strPath="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";CRegKey regKey;LONG lResult;lResult=regKey.Open(HKEY_CURRENT_USER,LPCTSTR(strPath),KEY_ALL_ACCESS);if (lResult!=ERROR_SUCCESS){AfxMessageBox("错误:无法查询有关的注册表信息");return;}char chDesktop[50];DWORD dwSize=50;regKey.QueryValue(chDesktop,"Desktop",&dwSize);m_strDesktopDir=chDesktop;UpdateData(FALSE);regKey.Close();}
获取字体文件夹的位置
获取HKEY_CURRENT_USER\software\Microsoft\Windows\Explorer\Shell Folders子键中获取Fonts的键值。
void CSystemInfoDlg::OnButtonFont() {CString strPath="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";CRegKey regKey;LONG lResult;lResult=regKey.Open(HKEY_CURRENT_USER,LPCTSTR(strPath),KEY_ALL_ACCESS);if (lResult!=ERROR_SUCCESS){AfxMessageBox("错误:无法查询有关的注册表信息");return;}char chFonts[50];DWORD dwSize=50;regKey.QueryValue(chFonts,"Fonts",&dwSize);m_strFonts=chFonts;UpdateData(FALSE);regKey.Close();}
获取网上邻居文件夹的位置
获取HKEY_CURRENT_USER\software\Microsoft\Windows\Explorer\Shell Folders子键中获取NetHood的键值。
void CSystemInfoDlg::OnButton8() {CString strPath="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";CRegKey regKey;LONG lResult;lResult=regKey.Open(HKEY_CURRENT_USER,LPCTSTR(strPath),KEY_ALL_ACCESS);if (lResult!=ERROR_SUCCESS){AfxMessageBox("错误:无法查询有关的注册表信息");return;}char chNetHood[50];DWORD dwSize=50;regKey.QueryValue(chNetHood,"NetHood",&dwSize);m_strNetHood=chNetHood;UpdateData(FALSE);regKey.Close();}
获取“我的文档”文件夹的位置
获取HKEY_CURRENT_USER\software\Microsoft\Windows\Explorer\Shell Folders子键中获取Personal的键值。
void CSystemInfoDlg::OnButton10() {CString strPath="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";CRegKey regKey;LONG lResult;lResult=regKey.Open(HKEY_CURRENT_USER,LPCTSTR(strPath),KEY_ALL_ACCESS);if (lResult!=ERROR_SUCCESS){AfxMessageBox("错误:无法查询有关的注册表信息");return;}char chMyDoc[50];DWORD dwSize=50;regKey.QueryValue(chMyDoc,"Personal",&dwSize);m_strPersonal=chMyDoc;UpdateData(FALSE);regKey.Close();}
- 操作注册表
- 注册表操作
- 注册表操作
- 操作注册表
- 注册表操作
- 注册表操作
- 注册表操作
- 注册表操作
- 注册表操作
- 注册表操作
- 注册表操作
- 注册表操作
- 操作注册表
- 注册表操作
- 注册表操作
- 注册表操作
- 注册表操作
- 操作注册表
- exp命令优化与常见问题
- ubuntu aptgetinstall
- 字符编码笔记:ASCII,Unicode和UTF-8
- Maxima 的三角函数化简功能
- 随机数,自己老忘
- 注册表操作
- ios开发知识点汇总
- c# 读取rtf后,不保存关闭
- apache ftpClient 多网卡上传文件超时解决。
- poj Secret Milking Machine
- poj3608 Bridge Across Islands (旋转卡壳之两凸包最短距)
- hdu 1257 最少拦截系统 (暴力版&温柔版/强力注释版)
- poj2079 Triangle (旋转卡壳之最大三角形)
- 蓝牙开发的一些网站和博客文章地址