브라우저에서 클라이언트의 컴퓨터 이름을 읽으려면 어떻게 해야 합니까?
브라우저에서 클라이언트의 컴퓨터 이름을 읽으려면 어떻게 해야 합니까?
JavaScript 및/또는 ASP.NET을 사용할 수 있습니까?
제가 인트라넷(IE 전용)의 내부 응용 프로그램에 대해 수행한 적이 있기 때문에 IE로 '가끔' 수행할 수 있습니다.다음을 시도합니다.
function GetComputerName() {
try {
var network = new ActiveXObject('WScript.Network');
// Show a pop up if it works
alert(network.computerName);
}
catch (e) { }
}
브라우저가 ActiveX 개체에 액세스할 수 있도록 IE에서 특정 보안 설정을 설정해야 할 수도 있고 그렇지 않을 수도 있습니다.
다음은 WScript에 대한 추가 정보 링크입니다.추가 정보
브라우저, 운영 체제, 화면 색상, 화면 해상도, 플래시 버전 및 Java 지원은 모두 JavaScript(및 몇 가지 이상)에서 감지할 수 있어야 합니다.그러나 컴퓨터 이름은 사용할 수 없습니다.
편집: 적어도 일부 브라우저에서는 가능하지 않습니다.
asp.net 을 사용하여 IP 주소를 얻은 다음 IP에서 역 DNS 조회를 수행하여 호스트 이름을 가져올 수 있습니다.
ASP.NET 개발자의 요리책에서...역 DNS 조회를 수행하는 중입니다.
Javascript로 사용자 컴퓨터 이름을 가져올 수 없습니다.브라우저 및 네트워크에 대한 모든 세부 정보를 얻을 수 있습니다.하지만 그 이상은 아닙니다.
누군가가 오늘 이전 질문 중 하나에서 대답한 것처럼.
저는 이미 당신의 웹사이트를 방문하는 것에 호의를 베풀었습니다. 아마도 저는 다시 돌아오거나 다른 친구들을 소개할 것입니다.제가 어디에 있는지, 어떤 OS, 브라우저, 화면 해상도를 사용하는지도 알려드렸습니다. 왜 속옷 색깔을 알고 싶으세요? ;-)
asp.net 을 통해서도 할 수 없습니다.
아래에 지정된 코드를 사용하여 Mozilla Firefox에서 클라이언트 컴퓨터 이름을 가져옵니다.
netscape.security.PrivilegeManager.enablePrivilege( 'UniversalXPConnect' );
var dnsComp = Components.classes["@mozilla.org/network/dns-service;1"];
var dnsSvc = dnsComp.getService(Components.interfaces.nsIDNSService);
var compName = dnsSvc.myHostName;
또한 동일한 코드 조각을 내선 번호로 입력할 수 있으며 웹 페이지에서 호출할 수 있습니다.
아래 샘플 코드를 찾아주세요.
확장 코드:
var myExtension = {
myListener: function(evt) {
//netscape.security.PrivilegeManager.enablePrivilege( 'UniversalXPConnect' );
var dnsComp = Components.classes["@mozilla.org/network/dns-service;1"];
var dnsSvc = dnsComp.getService(Components.interfaces.nsIDNSService);
var compName = dnsSvc.myHostName;
content.document.getElementById("compname").value = compName ;
}
}
document.addEventListener("MyExtensionEvent", function(e) { myExtension.myListener(e); }, false, true); //this event will raised from the webpage
웹 페이지 코드:
<html>
<body onload = "load()">
<script>
function showcomp()
{
alert("your computer name is " + document.getElementById("compname").value);
}
function load()
{
//var element = document.createElement("MyExtensionDataElement");
//element.setAttribute("attribute1", "foobar");
//element.setAttribute("attribute2", "hello world");
//document.documentElement.appendChild(element);
var evt = document.createEvent("Events");
evt.initEvent("MyExtensionEvent", true, false);
//element.dispatchEvent(evt);
document.getElementById("compname").dispatchEvent(evt); //this raises the MyExtensionEvent event , which assigns the client computer name to the hidden variable.
}
</script>
<form name="login_form" id="login_form">
<input type = "text" name = "txtname" id = "txtnamee" tabindex = "1"/>
<input type="hidden" name="compname" value="" id = "compname" />
<input type = "button" onclick = "showcomp()" tabindex = "2"/>
</form>
</body>
</html>
JavaScript는 컴퓨터 이름, 파일 시스템 및 기타 로컬 정보에 액세스할 수 없기 때문에 그렇게 할 방법이 없습니다.보안이 주요 목적입니다.
아니요 이 데이터는 노출되지 않습니다.사용할 수 있는 유일한 데이터는 HTTP 요청을 통해 노출되는 데이터이며, 여기에는 해당 OS 및 기타 정보가 포함될 수 있습니다.하지만 확실히 기계 이름은 아닙니다.
<html>
<body onload = "load()">
<script>
function load(){
try {
var ax = new ActiveXObject("WScript.Network");
alert('User: ' + ax.UserName );
alert('Computer: ' + ax.ComputerName);
}
catch (e) {
document.write('Permission to access computer name is denied' + '<br />');
}
}
</script>
</body>
</html>
웹에 구문 분석할 정보가 있습니다.RTC 헤더.
var p = new window.RTCPeerConnection();
p.createDataChannel(null);
p.createOffer().then((d) => p.setLocalDescription(d))
p.onicecandidate = (e) => console.log(p.localDescription)
Kelsey의 업데이트 버전:
$(function GetInfo() {
var network = new ActiveXObject('WScript.Network');
alert('User ID : ' + network.UserName + '\nComputer Name : ' + network.ComputerName + '\nDomain Name : ' + network.UserDomain);
document.getElementById('<%= currUserID.ClientID %>').value = network.UserName;
document.getElementById('<%= currMachineName.ClientID %>').value = network.ComputerName;
document.getElementById('<%= currMachineDOmain.ClientID %>').value = network.UserDomain;
});
값을 저장하려면 다음 컨트롤을 추가합니다.
<asp:HiddenField ID="currUserID" runat="server" /> <asp:HiddenField ID="currMachineName" runat="server" /> <asp:HiddenField ID="currMachineDOmain" runat="server" />
뒤에서 이렇게 부를 수도 있는 곳:
Page.ClientScript.RegisterStartupScript(this.GetType(), "MachineInfo", "GetInfo();", true);
음, 당신이 HttpRequest를 그냥 사용할 수 없는 이유가 있습니까?이것은 서버 측에 있을 것이지만 필요하다면 자바스크립트로 전달할 수 있습니까?
Page.Request.UserHostName
이와 관련된 한 가지 문제는 인트라넷 환경에서만 작동할 수 있다는 것입니다. 그렇지 않으면 라우터 또는 프록시 주소를 선택하게 됩니다.
언급URL : https://stackoverflow.com/questions/922476/how-can-i-read-the-clients-machine-computer-name-from-the-browser
'programing' 카테고리의 다른 글
한자가 있는 엑셀 파일을 CSV로 내보내려면 어떻게 해야 합니까? (0) | 2023.06.10 |
---|---|
매크로가 인수 수에 따라 오버로드될 수 있습니까? (0) | 2023.06.10 |
Microsoft Excel 매크로에 포함된 연결 문자열 수정 (0) | 2023.06.10 |
문자열 배열에 값이 포함되어 있는지 확인하고 포함되어 있으면 위치 가져오기 (0) | 2023.06.10 |
UICollectionViewCell 내부의 UICollectionView -- 동적 높이? (0) | 2023.06.10 |