2013-08-07 140 views
0

我目前正在研究一個項目,其中我(除其他之外)需要找到遠程計算機的MAC地址。問題是,我被限制只能通過SQL查詢訪問計算機。 (所以我不能使用WMI)如何從MSSQL服務器2000獲取MAC地址

遠程計算機運行的是Windows Server 2000和MS SQL Server 2000中

我知道遠程計算機的IP,我能夠與管理員登錄帳戶。我怎樣才能從遠程計算機獲得MAC地址(最好是所有的)?

感謝您的回答。

+0

注意:我能夠通過SQL訪問遠程計算機上的Windows註冊表。是否有包含MAC的任何鍵/值的靜態路徑? –

回答

0

我解決它爲我的電腦

//不介意的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與幫助格式化和字節/十六進制轉換

0

根據this,它似乎並不可以。如果您使用的是SQL Server 2005+,那麼我認爲您可以在SQLCLR中編寫一些代碼,而無需太多工作。

0

我認爲某種通過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} 

項下,但如果和這裏將是硬件配置而定。

+0

我會試試看看它是否有效。我會稍後再回來看看。 –

+0

不幸的是,xp_cmdshell已停用,因此我無法做到 –

+0

這就是我在所有教程中發現的情況,但似乎由於某種原因,沒有任何網絡適配器的「NetworkAddress」鍵。沒有其他值看起來像MAC地址。 –