2010-05-17 1 views

답변

0

당신이 가진 윈도우 머신 이름을 얻을 수 있습니다 :

감사

가 이미이 옵션

string IP = System.Web.HttpContext.Current.Request.UserHostAddress; 
string compName = DetermineCompName(IP); 

System.Net.IPHostEntry teste = System.Net.Dns.GetHostEntry(IP); 
ssresult = IP + " - " + teste.HostName; 

// TODO: Write implementation for action 

private static string DetermineCompName(string IP) 
{ 
    IPAddress myIP = IPAddress.Parse(IP); 
    IPHostEntry GetIPHost = Dns.GetHostEntry(myIP); 
    string[] compName = GetIPHost.HostName.ToString().Split('.'); 
    return compName[0]; 
} 

그 모든

을 tryed // 나에게 단지 IP를 제공합니다. MachineName

+0

, 그리고 난 고객 이름을 묻습니다 – Filipe

+0

죄송합니다. 귀하의 질문을 잘못 읽었습니다. 여기에 설명 된대로 win API를 사용할 수 있습니다 - http://www.codeproject.com/KB/IP/ListNetworkComputers.aspx 네트워크의 모든 컴퓨터 목록을 캐시해야하므로 훌륭한 옵션이 아닙니다. – ClearCarbon

+0

더 자세히 살펴보고 nslookup을 실행할 수 있습니다. System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo sInfo = new System.Diagnostics.ProcessStartInfo ("nslookup.exe"); 결과 = process.StandardOutput.ReadToEnd(); – ClearCarbon

0

그래, 계속 컴퓨터를 요청하고 캐싱하는 것은 대단히 비효율적입니다.

나는이 코드를 테스트하지 않았습니다 백그라운드에서 nslookup을 실행하는 갈 것 어느 쪽도 아니 그것은 실패에 대한 오류를 처리하지만, 기본적으로, 당신은 할 수 있습니다 :

System.Diagnostics.Process process = new System.Diagnostics.Process(); 
System.Diagnostics.ProcessStartInfo sInfo = new System.Diagnostics.ProcessStartInfo("nslookup.exe", "192.168.1.100"); 
string result = process.StandardOutput.ReadToEnd(); 

가 그럼 그냥 결과 값을 구문 분석합니다.

+0

오케이 죄송합니다. 좀 더 자세히 조사 할 시간이 없지만 도움이 될 것입니다. - http://stackoverflow.com/questions/353601/capturing-nslookup-shell-output-with-c – ClearCarbon

3

작동하도록 보장 할 수 없습니다.

가장 가까운 대상은 이미 시도한 내용 인 System.Net.Dns.GetHostEntry을 사용하여 역방향 DNS 조회를 수행하는 경로로 이동하는 것입니다.

문제는 시스템이 원격 웹 클라이언트의 호스트 이름을 IP 주소만으로 알 수있는 방법이 없다는 것입니다 (같은 서브넷에 있지 않으면 검색 할 수 있습니다).

IP를 호스트 이름으로 다시 매핑 할 수있는 DNS 인프라로 되돌려 야합니다 [이것은 호스트 이름을 입력 할 때 nslookup이 수행하는 작업입니다] 많은 장소가 역방향 IP 설정을 방해하지 않습니다 기록.

플러스의 경우 호스트 이름과 일치하지 않는 경우가 많습니다. "1.2.3.4"에 대한 역방향 조회가 실제 호스트 이름 대신 "machine-1.2.3.4"행으로 돌아 오는 것이 일반적입니다.

많은 클라이언트 컴퓨터가 외부 관점에서 단일 IP를 갖도록 클라이언트가 모든 종류의 네트워크 주소 변환 뒤에있는 경우이 문제는 더욱 악화됩니다. "네트워크의 사용자"라고 말한 이후로는 그렇지 않습니다. 여담으로

, 서버로 이동하여 명령 프롬프트에서 입력하면,

nslookup <some ip> 

(여기서 이러한 클라이언트 시스템 중 하나의 예입니다), 다시 호스트 이름을받을 수 있나요?

그렇다면 System.Net.Dns.GetHostEntry도 가능해야합니다. 그렇다면 위에서 언급 한 이유 때문에 가능하지 않을 수 있습니다.

0

당신의 클라이언트는 Windows는 이름을 얻기 위해이 클라이언트 측 코드를 사용하여 서버에 다시 전달할 수 IE를 실행 기반으로 가정하면 :

<script type="text/javascript"> 
     function create() 
     { 
      var net = new ActiveXObject("wscript.network"); 
      document.write(net.ComputerName); 
     } 
</script> 
관련 문제