2009-01-19 25 views
10

Trong dịch vụ .NET Windows (C#), làm thế nào tôi có thể nhận được tên máy tính?Nhận tên máy tính trong dịch vụ Windows?

Đây có phải là phương pháp đáng tin cậy hay tôi nên quấn nó trong thử/nắm bắt?

+0

Bản sao có thể có của [Làm cách nào để có tên máy tính trong .NET] (http://stackoverflow.com/questions/1768198/how-do-i-get-the-computer-name-in-net) –

Trả lời

20

Nhìn vào số Environment class. Như vậy là rất nhiều những điều tốt đẹp trong đó, bao gồm cả MachineName:

string CurrentMachineName = Environment.MachineName; 

Theo các tài liệu, điều này có thể tạo ra một InvalidOperationException vì vậy bạn sẽ cần phải nhận thức được khả năng đó. Nguy cơ có thể không đảm bảo gói nó trong một thử/bắt, mặc dù.

+2

Chúng ta đã thấy các lỗi trong trường không thường xuyên, vì vậy bạn nên bắt IOE nếu đường dẫn mã của bạn là rất quan trọng. – JBRWilkinson

12

Tôi nghĩ trước tiên bạn phải quyết định ý bạn là "tên máy tính".

Như những người khác đã nói, và có thể "theo truyền thống" trên cửa sổ, bạn sẽ sử dụng thuộc tính Environment.MachineName để có được tên máy tính , thực sự là tên NetBIOS của máy. Một tùy chọn khác sẽ là tên DNS (đủ điều kiện) của máy. Tuy nhiên, hãy lưu ý rằng một máy tính thực sự có thể có nhiều bộ điều hợp/Địa chỉ IP/bất kỳ thứ gì và do đó có nhiều tên DNS.

Xem xét việc xử lý tiềm năng InvalidOperationException của Environment.MachineName, tôi khuyên bạn nên suy nghĩ về những gì bạn thực sự sẽ làm nếu bạn gặp phải. Nếu có điều gì đó bạn có thể làm về nó, bạn có thể và tất nhiên nên bắt nó.

Ví dụ, trong một số mã của tôi, tôi cần lấy tên máy tính (tình cờ cũng trong một dịch vụ), nhưng tôi chỉ sử dụng nó cho mục đích chẩn đoán. Nếu Environment.MachineName không thành công, tôi chỉ sử dụng một số chuỗi "(unknown)" trong đầu ra chẩn đoán (và cũng có thể đăng nhập lỗi một lần).

Nếu kết quả là quan trọng đối với việc xử lý tiếp theo của bạn, bạn có lẽ cũng nên bắt ngoại lệ, ghi sự cố vào nhật ký sự kiện của cửa sổ và "chết".

+0

Lưu ý cho câu trả lời chi tiết và lời khuyên – AFract

Các vấn đề liên quan