| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4846 人关注过本帖
标题:C++读取注册表中的mac地址,总是读不对,求指导!
只看楼主 加入收藏
九天云中龙
Rank: 1
来 自:江苏连云港
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-3-1
收藏
 问题点数:0 回复次数:5 
C++读取注册表中的mac地址,总是读不对,求指导!
各位大神好:
    小弟想用C++读取注册表中的mac地址,在网上找了一个范例之后修改了一下,但是,每次读出来的mac地址都是不同的,并且,此mac地址与注册表中的键值也一直不相同,求大神指导一下,具体代码如下:
#include <windows.h>
#include <iostream>
using namespace std;
int main()
{
    HKEY hOpen;
    char key[255] = "SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\0000";
    char name[100] = "DriverDateData";
    string buf[255];
    DWORD size;
    if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, key, 0, KEY_READ, &hOpen))
    {
        RegQueryValueEx(hOpen, name, NULL, NULL, (BYTE*)buf, &size);
        cout << buf << endl;
    }
    RegCloseKey(hOpen);
    Sleep(300000);
    return 0;
}
搜索更多相关主题的帖子: include 注册表 网上 
2016-04-20 16:55
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册:2011-1-18
收藏
得分:0 
第一个问题,string buf[255]; 这是什么?我猜你想要的是 char buf[255] 吧
第二个问题,RegQueryValueEx成功了没有?你的看其返回值
2016-04-21 08:56
九天云中龙
Rank: 1
来 自:江苏连云港
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-3-1
收藏
得分:0 
回复 2楼 rjsp
1.这里用string是OK的,用char反而没有值
2.函数有运行成功,数据读到了,只是读取的不对而已。
2016-04-25 09:20
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:0 
这样
程序代码:
DWORD dwtype=REG_SZ;  //读取的数据类型
BYTE data[MAX_PATH];
SecureZeroMemory(data,MAX_PATH);
...
RegQueryValueEx(hOpen, name, NULL, &dwtype, (LPBYTE)data, &size);

未佩好剑,转身便已是江湖
2016-04-25 10:09
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册:2011-1-18
收藏
得分:0 
以下是引用九天云中龙在2016-4-25 09:20:06的发言:

1.这里用string是OK的,用char反而没有值
2.函数有运行成功,数据读到了,只是读取的不对而已。
听不懂,我帮你写一个吧

程序代码:
#include <windows.h>
#include <iostream>
#include <iomanip>
using namespace std;

int main( void )
{
    const char* key = "SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\0000";
    const char* value = "DriverDateData";

    HKEY hOpen;
    if( ERROR_SUCCESS == RegOpenKeyExA(HKEY_LOCAL_MACHINE,key,0,KEY_READ,&hOpen) )
    {
        BYTE buf[255];
        DWORD len = _countof(buf);
        if( ERROR_SUCCESS == RegQueryValueExA(hOpen,value,NULL,NULL,buf,&len) )
        {
            for( DWORD i=0; i!=len; ++i )
                cout << ' ' << setfill('0') << setw(2) << hex << (unsigned)buf[i];
        }

        RegCloseKey( hOpen );
    }
    return 0;
}

2016-04-25 11:13
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
回复 5楼 rjsp
获取的和ipconfig得到的mac地址不同,mac地址只有6个字节,我改用下述代码能拿到本机的mac,不知道通用不:
#include <windows.h>
#include <iostream>
using namespace std;
int main()
{
    HKEY hOpen;
    char key[255] = "Software\\SystemSres";
    char name[100] = "mac";
    char  buf[255];
    DWORD size;
    if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_CURRENT_USER, key, 0, KEY_READ, &hOpen))
    {
        RegQueryValueEx(hOpen, name, NULL, NULL, (BYTE*)buf, &size);
        cout << buf << endl;
    }
    RegCloseKey(hOpen);
    return 0;
}

能编个毛线衣吗?
2016-04-25 11:44
快速回复:C++读取注册表中的mac地址,总是读不对,求指导!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020505 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved