【问题标题】:How to get the MAC-address from MSSQL server 2000如何从 MSSQL server 2000 获取 MAC 地址
【发布时间】:2013-08-08 17:29:31
【问题描述】:

我目前正在进行一个项目,我(除其他外)需要找到远程计算机的 MAC 地址。问题是我被限制只能通过 SQL 查询访问计算机。 (所以我不能使用 WMI)

远程计算机正在运行 Windows Server 2000 和 Ms SQL server 2000。

我知道远程计算机的 IP,并且可以使用管理员帐户登录。如何从远程计算机获取 MAC 地址(最好是全部)?

感谢您的回答。

【问题讨论】:

  • 注意:我可以通过 SQL 访问远程计算机上的 Windows 注册表。是否有任何包含 MAC 的键/值的静态路径?

标签: sql-server mac-address windows-server windows-server-2000


【解决方案1】:

我认为通过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}

键,但是否和在哪里取决于硬件配置。

【讨论】:

  • 很遗憾 xp_cmdshell 已停用,所以我不能这样做
  • 这是我在所有教程中发现的,但似乎由于某种原因,任何网络适配器都没有“NetworkAddress”键。并且没有其他值看起来像 MAC 地址。
  • @Darth_Peter 那么看起来你被卡住了。您可能需要调整您的要求。
  • 恐怕你是对的。我会看看我是否可以解决我的限制,或者我是否可以通过其他方式解决它
【解决方案2】:

根据this,看来你不能。如果您使用的是 SQL Server 2005+,我认为您可以在 SQLCLR 中编写一些代码来执行此操作而无需太多努力。

【讨论】:

    【解决方案3】:

    我为我的电脑解决了这个问题

    //不要介意makeQuery和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]);
    

    这应该适用于其他 windows server 2000 服务器

    感谢@morgano 在格式化和字节/十六进制转换方面的帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 1970-01-01
      • 2016-01-13
      • 1970-01-01
      • 2011-02-14
      相关资源
      最近更新 更多