注册 登录
编程论坛 VB6论坛

读取本机物理地址(win10系统)并比较,如果正确继续执行,不正确退出执行

qq93188931 发布于 2016-11-29 19:16, 1580 次点击
如题:想把宏执行加上执行条件,读取本机物理地址(win10系统)并比较,如果正确继续执行,不正确退出执行。

软件上的一段宏:
Sub main()

MyAppID = Shell("J:\abc.exe", 1)
AppActivate MyAppID

End Sub

谢谢!!
8 回复
#2
qq931889312016-11-29 19:19
谢谢大侠们,帮帮忙吧!
#3
xiangyue05102016-11-30 10:16
自己修改一下这段代码。
程序代码:

    Dim obj1 As Object, oObjs As Object
    Dim sSql As String
    sSql = "SELECT * FROM Win32_NetworkAdapter WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> 'Microsoft'))"
    Set oObjs = GetObject("winmgmts:").ExecQuery(sSql)
    For Each obj1 In oObjs
       EnumMACAddresses = EnumMACAddresses & obj1.MACAddress & "," & obj1.Description & vbCrLf
    Next obj1
#4
xzlxzlxzl2016-11-30 10:19
系统登记的mac地址也是可以改的。
如果是用于软件注册的,可以读取CPU系列号、主板型号,这些无法更改。
#5
qq931889312016-12-01 21:14
回复 3楼 xiangyue0510
谢谢
#6
qq931889312016-12-01 21:15
以下是引用xzlxzlxzl在2016-11-30 10:19:43的发言:

系统登记的mac地址也是可以改的。
如果是用于软件注册的,可以读取CPU系列号、主板型号,这些无法更改。

建议很好,能不能附上代码呢,非常感谢!
#7
xzlxzlxzl2016-12-02 08:47
代码通3楼版主代码差不多,都是使用wmi查询获取的,获取CPUID的代码如下:
    Dim obj1 As Object, oObjs As Object
    Dim sSql As String
    sSql = "SELECT * FROM Win32_Processor"
    Set oObjs = GetObject("winmgmts:").ExecQuery(sSql)
    For Each obj1 In oObjs
       EnumMACAddresses = EnumMACAddresses & obj1.Properties_("ProcessorId") & vbCrLf
    Next obj1
'经验证,改代码运行成功,获取我现在电脑的cpu系列号为:BFEBFBFF000306A9,这是全世界唯一的
#8
xzlxzlxzl2016-12-02 08:57
不过,通过wmi查询到的信息好像都在注册表里,而注册表是可以人为更改的。要想真正获得,可能还是要通过相关直接读取硬件信息的api获取。
#9
qq931889312016-12-02 20:10
哦,已经收益匪浅了,谢谢您!
1