我目前正在做一个项目,我(除其他外)需要找到远程计算机的 MAC 地址。问题是我被限制只能通过 SQL 查询访问计算机。(所以我不能使用 WMI)
远程计算机正在运行 Windows Server 2000 和 Ms SQL server 2000。
我知道远程计算机的 IP,并且可以使用管理员帐户登录。如何从远程计算机获取 MAC 地址(最好是全部)?
感谢您的回答。
我目前正在做一个项目,我(除其他外)需要找到远程计算机的 MAC 地址。问题是我被限制只能通过 SQL 查询访问计算机。(所以我不能使用 WMI)
远程计算机正在运行 Windows Server 2000 和 Ms SQL server 2000。
我知道远程计算机的 IP,并且可以使用管理员帐户登录。如何从远程计算机获取 MAC 地址(最好是全部)?
感谢您的回答。
我认为通过某种外部呼叫xp_cmdshell
是您唯一的选择。您的 SQL Server 上可能会禁用此功能(有充分的理由)。
就像是
Create table #results(data varchar(250))
Insert #results
exec master..xp_cmdshell 'ipconfig /all'
select * from #results where data like 'physical address%'
根据您的评论 - 您可以在注册表中找到它
HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}
关键,但是否和在哪里将取决于硬件配置。
根据这个,似乎你不能。如果您使用的是 SQL Server 2005+,我认为您可以在 SQLCLR 中编写一些代码来执行此操作而无需太多努力。
I solved it for my computer
//dont mind the makeQuery and querySrv
ResultTable res = makeQuery(querySrv,("USE Master; EXEC xp_regread 'HKEY_LOCAL_MACHINE', 'SOFTWARE\\Description\\Microsoft\\rpc\\UuidTemporaryData', 'NetworkAddress'"));
byte[] bMac =(byte[])res.getRow(0).data[1];
String mac = String.format("%02X:%02X:%02X:%02X:%02X:%02X", bMac[0], bMac[1], bMac[2], bMac[3], bMac[4], bMac[5]);
This should work for other windows server 2000 servers
Thanks to @morgano for help with the formating and byte/hex converting