分享
 
 
 

获取系统上的用户注册信息

王朝厨房·作者佚名  2007-01-04
窄屏简体版  字體: |||超大  

作者: 小林

问题

有的程序员希望能够显示当前安装的 Windows 版本的注册用户的信息,此信息包括用户名和单位。但 似乎找不到一个 Windwos API 函数来完成此功能。

方法

由于没有直接的方法来实现此功能,因此也就找不到单个的 Windows API 函数来显示注册信息,只能 由程序员以高超的编程技巧联合好几个 Windows API 函数来完成此功能。

有关 Windows 系统注册用户的姓名和单位的信息实际上是保存在 Windows 的系统注册表中。要获取这 些信息,则需要打开注册表,找到正确的条目,然后取回所查找的关键字的值。

在本节中,将介绍如何在新的 Windows 9x 注册表数据库中查找适当的关键字及其值,从而完成检索用 户信息的任务。

步骤

按照下列步骤实现一个例子程序。运行此例子程序,选择菜单 SysInfo 中选择菜单项 registration, 则弹出一个对话框,显示 Windows 系统注册用户的姓名和单位。

实现例子程序的具体步骤如下:

1.在 Visual C++ 中,利用 AppWizard 创建新的项目文件,并命名此项目文件为 LD15.MAK.

2.进入 AppStudio 并创建新的对话框,添加两个静态文本域,标题分别为 User name 和 Organization。

3.与前两个静态文本域对齐,创建另外两个静态文本域,标题为空,ID 分别为 ID_USER_NAME 和 ID_ORGANIZATION。

4.改变对话框 ID 为 ID_USER_INFO,改变对话框标题为 User Registration Information。

5.进入 ClassWizard,选择按钮 Add Class。命名新类为 CUserRegDlg,选择基类为 CDIALOG, 并接受源代码和文件名和头文件名的缺省值。

6.在 ClassWizard,从对象 ID 中选择对象 CUserRegDlg ,选择消息 WM_INITDIALOG,点击按钮 Add Function,在函数 OnInitDialog 中输入下列代码:

BOOL CUserRegDlg::OnInitDialog()

{

CDialog::OnInitDialog();

HKEY hkRoot,hkSubKey;

if(RegOpenKey(HKEY_LOCAL_MACHINE,NULL,&hkRoot)==ERROR_SUCCESS)

{

if(RegOpenKeyEx(hkRoot,

"SOFTWARE\\MICROSOFT\\Windows\\CurrentVersion\\",

0,KEY_ENUMERATE_SUB_KEYS|KEY_EXECUTE|KEY_QUERY_VALUE,

&hkSubKey)==ERROR_SUCCESS)

{

char ValueName[256];

unsigned char DataValue[256];

unsigned long cbValueName=256;

unsigned long cbDataValue=256;

DWORD dwType;

if(RegEnumValue(hkSubKey,4,ValueName,&cbValueName,NULL,

&dwType,DataValue,&cbDataValue)==ERROR_SUCCESS)

{

GetDlgItem(ID_USER_NAME)->

SetWindowText((char *)DataValue);

}

cbValueName=256;

cbDataValue=256;

if(RegEnumValue(hkSubKey,5,ValueName,&cbValueName,NULL,

&dwType,DataValue,&cbDataValue)==ERROR_SUCCESS)

{

GetDlgItem(ID_ORGANIZATION)->

SetWindowText((char *)DataValue);

}

RegCloseKey(hkSubKey);

}

RegCloseKey(hkRoot);

}

return TRUE; // return TRUE unless you set the focus to a control

}

7.返回 AppStudio,选择菜单 IDR_MAUNFRAME。在主菜单 SysINfo 中添加新的菜单项 User Registration,ID 为 ID_USER_REGISTRATION。

8.进入 ClassWizard,从下拉列表中选择类 CMainFrame,从对象 ID 列表中选择对象 ID_USER_REGISTRATION,从消息列表中选择消息 COMMAND。点击按钮 Add Function,函数命名为 OnUserRegistration。

9.选择按钮 Edit Code,在方法 OnUserRegistration 中输入下列代码:

void CMainFrame::OnUserRegistration()

{

CUserRegDlg dlg;

dlg.DoModal();

}

10.在文件 MAINFRM.CPP 的顶部添加下列行:

#include "UserRegDlg.h"

11.编译并运行此例子程序。

用法

要检索用户信息,首先要打开并浏览 Windows 9x 的注册数据库。在此数据库中是一个包含 Windows 9x 系统各方面信息的关键字的层次集合。其中一个关键字可以按路径 SOFTWARE\\MICROSOFT\\Windows\\ CurrentVersion\来查找,此关键字包含检索用户名和单位的有用信息。

首先,必须打开注册数据库。要做到这一点,需要选择数据库中的一个根层次关键字并打开它。在本节 的例子程序中,此根层次关键字为 HKEY_LOCAL_MACHINE,调用 API 函数 RegOpenKey(或 RegOpenKeyEx) 打开此根层次关键字,然后调用函数 RegOpenKeyEx(在例子程序中示范了这两个函数的使用,其实任一函数 都可用于这两种情况)打开子关键字,并且获得关键字 CurrentVersion 的句柄。

一旦从注册数据库中检测到句柄,就可以调用函数 RegEnumValue 来检索此关键字的某个值。在本节的 例子程序中,我们感兴趣的两个值序号分别为4和5。一旦检索这两个值,就将其放置在对话框的静态文本 域中,并通过关闭所有打开的关键字来关闭数据库。关闭注册关键字句柄是通过调用 API 函数 RegCloseKey 来完成的。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有