找回密码
 加入
搜索
查看: 200|回复: 13

[系统综合] 根据电脑MAC地址判定是否应该启动相应程序

[复制链接]
发表于 2024-10-24 13:28:01 | 显示全部楼层 |阅读模式
悬赏20金钱已解决
本帖最后由 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地址作为凭证来启动某一程序。这样就能保证这个程序只能在这台电脑使用。

最佳答案

查看完整内容

wmic nicconfig where "ipenabled=true" get ipaddress, MACaddress 这个命令导出的MAC的符号是:不是-
发表于 2024-10-24 13:28:02 | 显示全部楼层
532918457 发表于 2024-10-28 10:09
为什么我的就是不行的呢?

wmic nicconfig where "ipenabled=true" get ipaddress, MACaddress 这个命令导出的MAC的符号是:不是-
发表于 2024-10-24 14:26:57 | 显示全部楼层
如果多张网卡,那么是否可以先用cmd  ipconfig /all  来获取所有网卡信息并写入文本里,然后逐行去匹配你要执行的mac地址。
发表于 2024-10-24 14:31:44 | 显示全部楼层
可以使用wmic nicconfig where "ipenabled=true" get ipaddress, MACaddress > 1.txt    可以用这个命令对,本机的所有 的网卡输入IP地址和MAC到文本1.txt中,然后你可以去读取这个文件中你所需要判断的哪个MAC就行。
发表于 2024-10-24 14:34:45 | 显示全部楼层
然后再使用filereadline这个读这个1.txt文件的行内容,读出来的内容,再判断一下,是不是你所需对应的MAC就行了
 楼主| 发表于 2024-10-24 15:33:44 | 显示全部楼层
ttmv2019sx 发表于 2024-10-24 14:31
可以使用wmic nicconfig where "ipenabled=true" get ipaddress, MACaddress > 1.txt    可以用这个命令对 ...

没用过这些命令,究竟是怎么使用法?
发表于 2024-10-24 15:56:50 | 显示全部楼层
532918457 发表于 2024-10-24 15:33
没用过这些命令,究竟是怎么使用法?

这个命令,,你可以先在DOS下  CMD中,输入上面的命令,会得到一个文件,你看一下这个文件里面的内容,是不是你所需要的,,这个是第一步,你先看
发表于 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
 楼主| 发表于 2024-10-25 13:42:05 | 显示全部楼层

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

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

发表于 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)
 楼主| 发表于 2024-10-28 10:09:34 | 显示全部楼层
zhaoceshi 发表于 2024-10-25 14:18
不好意思,刚才测试下,发现文本生成慢于代码的运行速度导致这个情况出现。把run函数改成RunWait函数即可 ...

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2024-10-28 23:15:51 | 显示全部楼层
每天学习新知识!
发表于 2024-10-28 23:18:28 | 显示全部楼层
每天学习新知识!
 楼主| 发表于 2024-10-29 15:05:07 | 显示全部楼层
感谢老哥,一直以来为我解答问题,我粗心直接在CMD那里是横杆的所以没留意到
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 01:01 , Processed in 0.081100 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表