簡體   English   中英

從網上鄰居獲取計算機名稱

[英]Getting computer names from my network places

我想知道是否有一種方法可以使用C#獲取顯示在網絡中的所有計算機名稱。

可以,但是需要一段時間。 :/

public List<String> ListNetworkComputers()
{
    List<String> _ComputerNames = new List<String>();
    String _ComputerSchema = "Computer";
    System.DirectoryServices.DirectoryEntry _WinNTDirectoryEntries = new System.DirectoryServices.DirectoryEntry("WinNT:");
    foreach (System.DirectoryServices.DirectoryEntry _AvailDomains in _WinNTDirectoryEntries.Children) {
        foreach (System.DirectoryServices.DirectoryEntry _PCNameEntry in _AvailDomains.Children) {
            if (_PCNameEntry.SchemaClassName.ToLower().Contains(_ComputerSchema.ToLower())) {
            _ComputerNames.Add(_PCNameEntry.Name);
            }
        }
    }
    return _ComputerNames;
}

您將要使用NetServerEnum()API。 我不相信在基本.NET庫中對此有托管包裝,但是我可以通過快速的Google搜索找到它: http : //www.codeproject.com/Articles/16113/Retreiving-a-list-of -網絡計算機名稱使用

注意 :我尚未測試或徹底檢查過代碼項目代碼,但是如果有任何問題,它應該足以滿足您的需求。

編輯: 除非您確定域環境,否則不要使用DirectoryServices System.DirectoryServices類是ADSI包裝程序,無需工作的Active Directory即可工作。 NetServerEnum()可在工作組和域上工作,但不能保證最可靠的數據(並非所有機器都可以顯示)。 它依賴於計算機瀏覽器服務。

最好的解決方案可能是包裝所有可能性並合並結果的類:/

取決於用戶的許可,應用程序可能會或可能不會獲得這些信息。

嘗試使用ActiveDirectory。 這應該為您提供有關本地網絡的准確信息。

使用System.DirectoryServices。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM