532918457 发表于 2024-10-24 13:28:01

根据电脑MAC地址判定是否应该启动相应程序

本帖最后由 532918457 于 2024-10-24 13:31 编辑

#include <Array.au3>

; 获取MAC地址
Func GetMACAddress()
    Local $objWMIService = ObjGet("winmgmts:{authenticationLevel=pktPrivacy}\\\\.\\root\cimv2")
    Local $colItems = $objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled = True")
    Local $macAddress = ""

    For $objItem In $colItems
      $macAddress = $objItem.MACAddress
      ExitLoop
    Next

    Return $macAddress
EndFunc

; 根据MAC地址启动程序
Func LaunchProgramByMAC(ByRef $macAddress, ByRef $programPath)
    Local $desiredMac = "00:11:22:33:44:55"; 替换为你想要启动程序的MAC地址
    If $macAddress == $desiredMac Then
      Run($programPath)
    EndIf
EndFunc

; 主程序
Local $macAddress = GetMACAddress()
Local $programPath = "E:\AU3\123.exe" ; 替换为你想要启动的程序路径
LaunchProgramByMAC($macAddress, $programPath)以上代码是由百度AI自动生成的,但是我也没明白他获取MAC地址用的命令的意思,我现在的场景是拥有多张网卡的,但是又怎么定位到我需要的网卡呢,是根据网卡的名字的吗?


我的目的是想根据某一台电脑的MAC地址作为凭证来启动某一程序。这样就能保证这个程序只能在这台电脑使用。

zhaoceshi 发表于 2024-10-24 13:28:02

532918457 发表于 2024-10-28 10:09
为什么我的就是不行的呢?

wmic nicconfig where "ipenabled=true" get ipaddress, MACaddress 这个命令导出的MAC的符号是:不是-

zhaoceshi 发表于 2024-10-24 14:26:57

如果多张网卡,那么是否可以先用cmdipconfig /all来获取所有网卡信息并写入文本里,然后逐行去匹配你要执行的mac地址。

ttmv2019sx 发表于 2024-10-24 14:31:44

可以使用wmic nicconfig where "ipenabled=true" get ipaddress, MACaddress > 1.txt    可以用这个命令对,本机的所有 的网卡输入IP地址和MAC到文本1.txt中,然后你可以去读取这个文件中你所需要判断的哪个MAC就行。

ttmv2019sx 发表于 2024-10-24 14:34:45

然后再使用filereadline这个读这个1.txt文件的行内容,读出来的内容,再判断一下,是不是你所需对应的MAC就行了

532918457 发表于 2024-10-24 15:33:44

ttmv2019sx 发表于 2024-10-24 14:31
可以使用wmic nicconfig where "ipenabled=true" get ipaddress, MACaddress > 1.txt    可以用这个命令对 ...

没用过这些命令,究竟是怎么使用法?

ttmv2019sx 发表于 2024-10-24 15:56:50

532918457 发表于 2024-10-24 15:33
没用过这些命令,究竟是怎么使用法?

这个命令,,你可以先在DOS下CMD中,输入上面的命令,会得到一个文件,你看一下这个文件里面的内容,是不是你所需要的,,这个是第一步,你先看

zhaoceshi 发表于 2024-10-25 09:08:40

Local $mac = "00:11:22:33:44:55"; 替换为你想要启动程序的MAC地址
Local $tempTXT = @TempDir & "/1.txt"

Run(@ComSpec & " /c " & 'wmic nicconfig where "ipenabled=true" get ipaddress, MACaddress > %temp%\1.txt',"",@SW_HIDE)
$lmac = FileRead($tempTXT)
if StringInStr($lmac,$mac) Then
        ConsoleWriteError("匹配到MAC,准备启动某个程序。")
        run("E:\AU3\123.exe"); 替换为你想要启动的程序路径
Else
        ConsoleWriteError("没有匹配到MAC")
EndIf

532918457 发表于 2024-10-25 13:42:05

zhaoceshi 发表于 2024-10-25 09:08

求助,我的win10系统,不写#RequireAdmin这个没权限在temp目录下添加1.txt,运行会“没有匹配到MAC+>13:40:24 AutoIt3.exe 完成::0”会提示这个,加了#RequireAdmin后,他不报错但也没有执行这两句代码,应该怎么办?   

ConsoleWriteError("匹配到MAC,准备启动某个程序。")
run("E:\AU3\云平台登录神器.exe"); 替换为你想要启动的程序路径

zhaoceshi 发表于 2024-10-25 14:18:21

532918457 发表于 2024-10-25 13:42
求助,我的win10系统,不写#RequireAdmin这个没权限在temp目录下添加1.txt,运行会“没有匹配到MAC+>13:40 ...

不好意思,刚才测试下,发现文本生成慢于代码的运行速度导致这个情况出现。把run函数改成RunWait函数即可。
RunWait(@ComSpec & " /c " & 'wmic nicconfig where "ipenabled=true" get ipaddress, MACaddress > %temp%\1.txt',"",@SW_HIDE)

532918457 发表于 2024-10-28 10:09:34

zhaoceshi 发表于 2024-10-25 14:18
不好意思,刚才测试下,发现文本生成慢于代码的运行速度导致这个情况出现。把run函数改成RunWait函数即可 ...

为什么我的就是不行的呢?

zxw91 发表于 2024-10-28 23:15:51

每天学习新知识!

zxw91 发表于 2024-10-28 23:18:28

每天学习新知识!

532918457 发表于 2024-10-29 15:05:07

感谢老哥,一直以来为我解答问题,我粗心直接在CMD那里是横杆的所以没留意到
页: [1]
查看完整版本: 根据电脑MAC地址判定是否应该启动相应程序