205上位机VC MFC获取计算机名用户名等信息
205上位机VC MFC获取计算机名用户名等信息 功能展示 电脑都有用户名,计算机名等信息,用户可以用鼠标进行获取与设置也以编写代码实现,当前例程实现电脑系统计算机名用户名的获取与设置,效果如图; 要点提示 电脑用户名的获取可以用函数GetUserName() 计算机名可以用函数GetComputerName()获取,计算机名设置可以用函数SetComputerName()实现; 一.GetUserName() 函数原型GetUserName(lpBuffer: PChar; {缓冲区}var nSize: DWORD {缓冲区大小}): 参数定义: 参数 类型及说明 1.lpBuffer String,一个字串缓冲区,预先初始化成由nSize指定的长度。它将用于容纳用户名,是获取名称缓冲区。 2.nSize Long,初始化成lpBuffer的长度。返回以后,它会包含载入lpBuffer的字符数量 ,是缓冲区的大小和返回帐号的大小 二. GetComputerName()函数原型:BOOL WINAPIGetComputerName(__out LPTSTRlpBuffer,__inout LPDWORDlpnSize); 参数定义: 1.lpBuffer [out]指向一块内存缓冲区,这个缓冲区用于接收计算机名称或群集的虚拟服务器名称。缓冲区的大小应该足够大,以便能够容纳MAX_COMPUTERNAME_LENGTH + 1个字符。 2.lpnSize [in, out]在输入时,指定的缓冲区的大小,这个大小是按照TCHAR计算的。 在输出的时候,字符的长度不包括终止空字符\0。如果缓冲区太小,该函数将失败,调用GetLastError返回ERROR_BUFFER_OVERFLOW。 实现功能 1.新建基于对话框的应用程序 2.拖拽一编辑框ID为IDC_EDIT1,用于显示获取信息;依次添加按钮<获取电脑拥有者名称><获取系统用户名><获取计算机名><设置电脑名称>实现相应功能 - void CGkbc8Dlg::OnPcownername()
- {
- CString sText="电脑拥有者:";
- HKEY hKey;
- LPCTSTR StrKey="Software\\Microsoft\\Windows NT\\CurrentVersion";
- if (ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,StrKey,NULL,KEY_ALL_ACCESS,&hKey))
- {
- DWORD dwSize=255,dwType=REG_SZ;
- char String[256];
- LPCSTR KeyValue="RegisteredOwner";
- if (ERROR_SUCCESS==::RegQueryValueEx(hKey,KeyValue,0,&dwType,(BYTE *)String,&dwSize))
- sText+=String;
- }
- sText+="\r\n电脑所有者单位:";
- if (ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE,StrKey,NULL,KEY_ALL_ACCESS,&hKey))
- {
- DWORD dwSize=255,dwType=REG_SZ;
- char String[256];
- LPCSTR KeyValue="RegisteredOrganization";
- if (ERROR_SUCCESS==::RegQueryValueEx(hKey,KeyValue,0,&dwType,(BYTE *)String,&dwSize))
- sText+=String;
- ::RegCloseKey(hKey);
- }
- MessageBox(sText);}
复制代码- void CGkbc8Dlg::OnUsername()
- {
- char cName[_MAX_PATH];
- DWORD dwSize=_MAX_PATH;
- ::GetUserName(cName,&dwSize);
- //<>
- SetDlgItemText(IDC_EDIT1,cName);
- }
- void CGkbc8Dlg::OnPcname()
- {
- char cName[_MAX_PATH];
- DWORD dwSize=_MAX_PATH;
- ::GetComputerName(cName,&dwSize);
- //<>
- SetDlgItemText(IDC_EDIT1,cName);
- }
- void CGkbc8Dlg::OnSetpcname() //要权限
- {
- CString sComputerName="gkbc8";
- if(::SetComputerName(sComputerName))
- MessageBox("设置成功,重启电脑生效","提示",MB_OK);
- }
复制代码另外计算机名的设置 在WIN7上得获得管理员权限,具体获取方法前面例程已介绍过,也可看视频演示学习 我们来演示下功能实现的整个过程
|