VS2013 MFC如何更改系统的OEM信息?

OEM信息可通过修改注册表的方法修改,所以这篇文章的思路为通过修改注册表修改OEM信息。

1、打开VS2013,新建一个MFC基于对话框的项目,命名为“OEM”。

2、添加控件并修改名称,如图:

3、设置控件的ID:

        “品牌”编辑框:IDC_NAME

        “型号”编辑框:IDC_Model

        “服务有效期”编辑框:IDC_Time

        “服务电话”编辑框:IDC_Phone

        “网站”编辑框:IDC_URL

        按钮:IDC_Update_OEM

4、点击菜单栏上的【项目(P)】->【OEM 属性(P)...】。

5、在属性窗口中,选择左侧的【配置属性】,右边的【字符集】选择【使用多字节字符集】,点击【确定】。

6、选择菜单栏上的【视图(V)】->【解决方案资源管理器(P)】。

7、在【解决方案资源管理器】窗口里双击【OEMDlg.h】。

8、在OEMDlg.h中添加代码(具体位置看图):

BOOL Name(CString strValue);
BOOL Model(CString strValue);
BOOL Time(CString strValue);
BOOL Phone(CString strValue);
BOOL URL(CString strValue);

9、回到对话框界面编辑页,双击按钮。

10、先不添加按钮的处理程序,添加到OEMDlg.cpp文件的最下面(代码太多了,我的屏幕小,就不截图了):

BOOL COEMDlg::Name(CString strValue)
{
	HKEY Name;
	CString strSubKey = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\OEMInformation");
	CString strName = _T("Manufacturer");
	DWORD dwDisp;
	if (ERROR_SUCCESS != RegCreateKeyEx(HKEY_LOCAL_MACHINE, strSubKey, NULL, NULL, REG_OPTION_VOLATILE, KEY_ALL_ACCESS, NULL, &Name, &dwDisp))
	{
		return FALSE;
	}
	if (ERROR_SUCCESS != RegSetValueExA(Name, (LPCSTR)strName, NULL,
		REG_SZ, (const BYTE*)strValue.GetBuffer(),
		strlen(strValue)))
	{
		RegCloseKey(Name);
		return FALSE;
	}
	RegCloseKey(Name);
	return TRUE;
}

BOOL COEMDlg::Model(CString strValue)
{
	HKEY Name;
	CString strSubKey = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\OEMInformation");
	CString strName = _T("Model");
	DWORD dwDisp;
	if (ERROR_SUCCESS != RegCreateKeyEx(HKEY_LOCAL_MACHINE, strSubKey, NULL, NULL, REG_OPTION_VOLATILE, KEY_ALL_ACCESS, NULL, &Name, &dwDisp))
	{
		return FALSE;
	}
	if (ERROR_SUCCESS != RegSetValueExA(Name, (LPCSTR)strName, NULL,
		REG_SZ, (const BYTE*)strValue.GetBuffer(),
		strlen(strValue)))
	{
		RegCloseKey(Name);
		return FALSE;
	}
	RegCloseKey(Name);
	return TRUE;
}

BOOL COEMDlg::Time(CString strValue)
{
	HKEY Name;
	CString strSubKey = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\OEMInformation");
	CString strName = _T("SupportHours");
	DWORD dwDisp;
	if (ERROR_SUCCESS != RegCreateKeyEx(HKEY_LOCAL_MACHINE, strSubKey, NULL, NULL, REG_OPTION_VOLATILE, KEY_ALL_ACCESS, NULL, &Name, &dwDisp))
	{
		return FALSE;
	}
	if (ERROR_SUCCESS != RegSetValueExA(Name, (LPCSTR)strName, NULL,
		REG_SZ, (const BYTE*)strValue.GetBuffer(),
		strlen(strValue)))
	{
		RegCloseKey(Name);
		return FALSE;
	}
	RegCloseKey(Name);
	return TRUE;
}

BOOL COEMDlg::Phone(CString strValue)
{
	HKEY Name;
	CString strSubKey = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\OEMInformation");
	CString strName = _T("SupportPhone");
	DWORD dwDisp;
	if (ERROR_SUCCESS != RegCreateKeyEx(HKEY_LOCAL_MACHINE, strSubKey, NULL, NULL, REG_OPTION_VOLATILE, KEY_ALL_ACCESS, NULL, &Name, &dwDisp))
	{
		return FALSE;
	}
	if (ERROR_SUCCESS != RegSetValueExA(Name, (LPCSTR)strName, NULL,
		REG_SZ, (const BYTE*)strValue.GetBuffer(),
		strlen(strValue)))
	{
		RegCloseKey(Name);
		return FALSE;
	}
	RegCloseKey(Name);
	return TRUE;
}

BOOL COEMDlg::URL(CString strValue)
{
	HKEY Name;
	CString strSubKey = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\OEMInformation");
	CString strName = _T("SupportURL");
	DWORD dwDisp;
	if (ERROR_SUCCESS != RegCreateKeyEx(HKEY_LOCAL_MACHINE, strSubKey, NULL, NULL, REG_OPTION_VOLATILE, KEY_ALL_ACCESS, NULL, &Name, &dwDisp))
	{
		return FALSE;
	}
	if (ERROR_SUCCESS != RegSetValueExA(Name, (LPCSTR)strName, NULL,
		REG_SZ, (const BYTE*)strValue.GetBuffer(),
		strlen(strValue)))
	{
		RegCloseKey(Name);
		return FALSE;
	}
	RegCloseKey(Name);
	return TRUE;
}


11、回到OnBnClickedUpdateOem()函数中,添加按钮的处理程序代码:

CString strName;
GetDlgItem(IDC_NAME)->GetWindowText(strName);
Name(strName);
CString strModel;
GetDlgItem(IDC_Model)->GetWindowText(strModel);
Model(strModel);
CString strTime;
GetDlgItem(IDC_Time)->GetWindowText(strTime);
Time(strTime);
CString strPhone;
GetDlgItem(IDC_Phone)->GetWindowText(strPhone);
Phone(strPhone);
CString strURL;
GetDlgItem(IDC_URL)->GetWindowText(strURL);
URL(strURL);
MessageBox(_T("OEM信息已成功更新,快去查看系统属性吧!"), _T("提示"), MB_ICONINFORMATION | MB_OK);


12、按照第6步的方法再次打开【解决方案资源管理器】,双击【stdafx.h】。

13、在stdafx.h的最下面,把#ifdef _UNICODE和最后一句#endif注释掉(也就是在这两句前面加一个//)。

14、生成程序,启动调试,输入你要的OEM信息并点击【更新OEM】按钮。

15、当出现提示信息时,点确定,看看系统属性,就会发现OEM信息已经更新了。

注意:本文章为baidu_38494049原创,转载请注明原文链接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值