如题。
在google和baidu搜索了,好像没有相关的资料
在google和baidu搜索了,好像没有相关的资料
解决方案 »
- C# 在C#中如何调用API函数SetClipboardData
- c/s模式,服务器端如何免安装sql server
- 用记事本编写控制台应用程序并运行
- 一个string 连接问题。
- 在局域网中与外网的通讯问题
- c#中datagrid数据导出execl 如何实现,
- C#应用程序界面优化问题?不够加分---在线等
- 有谁熟悉DataGridColumnStyle类。
- 难道TreeNode只能添加文本标签(string)?
- 拔完牙,好痛,散分1000 (2)
- 请教啥叫"工作流",小弟不理解,那位大哥能帮我解释一下吗!谢谢!
- ds.table["xx"]clear()效率低的问题,请教大家有何解决方案?
不过你可以通过ActiveX控件实现这个功能,就怕有些人会屏蔽
具体实现的html和javascript如下:
<HTML><HEAD><TITLE>WMI Scripting HTML</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<SCRIPT language=JScript event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for=foo>
document.forms[0].txtMACAddr.value=unescape(MACAddr);
document.forms[0].txtIPAddr.value=unescape(IPAddr);
document.forms[0].txtDNSName.value=unescape(sDNSName);
//document.formbar.submit();
</SCRIPT><SCRIPT language=JScript event=OnObjectReady(objObject,objAsyncContext) for=foo>
if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true)
{
if(objObject.MACAddress != null && objObject.MACAddress != "undefined")
MACAddr = objObject.MACAddress;
if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) != "undefined")
IPAddr = objObject.IPAddress(0);
if(objObject.DNSHostName != null && objObject.DNSHostName != "undefined")
sDNSName = objObject.DNSHostName;
}
</SCRIPT><META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY>
<OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT>
<OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></OBJECT>
<SCRIPT language=JScript>
var service = locator.ConnectServer();
var MACAddr ;
var IPAddr ;
var DomainAddr;
var sDNSName;
service.Security_.ImpersonationLevel=3;
service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');
</SCRIPT><FORM id=formfoo name=formbar action=NICPost.asp method=post><INPUT value=00:05:5D:0E:C7:FA name=txtMACAddr> <INPUT value=192.168.0.2 name=txtIPAddr> <INPUT value=typ name=txtDNSName> </FORM></BODY></HTML>
关键是用到两个ActiveX:
<OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT>
<OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></OBJECT>
不过这两个ActiveX都是系统自带,不用去下载或注册。
接下来的工作就是用脚本和ActiveX交互,脚本可以是js或Vbs我个人喜欢用js。
Request.ServerVariables.Get("HTTP_ACCEPT_LANGUAGE")
客户端ip:
Request.ServerVariables.Get("Remote_Addr");
客户端主机名:
Request.ServerVariables.Get("Remote_Host");
服务器ip:
Request.ServerVariables.Get("Local_Addr");
服务器名:
Request.ServerVariables.Get("Server_Name");
获得用户登陆名
Request.ServerVariables.Get("LOGON_USER");
要想透过代理服务器取得客户端的真实IP地址,就要使用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取。不过要注意的事,并不是每个代理服务器都能用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取客户端的真实 IP,有些用此方法读取到的仍然是代理服务器的IP。还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么用 Request.ServerVariables ("HTTP_X_FORWARDED_FOR") 取到的值将是空的。因此,如果要在程序中使用此方法,可以这样处理: ...... userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR") If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR") ...... 即:如果客户端通过代理服务器,则取 HTTP_X_FORWARDED_FOR 的值,如果没通过代理服务器,就取 REMOTE_ADDR 的值。 '通用函数:如果不能取客户端真实IP,就会取客户端的代理IP Private Function getIP() Dim strIPAddr If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" OR InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "unknown") > 0 Then strIPAddr = Request.ServerVariables("REMOTE_ADDR") ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") > 0 Then strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")-1) ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";") > 0 Then strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";")-1) Else strIPAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR") End If getIP = Trim(Mid(strIPAddr, 1, 30)) End Function
那两个是什么ActiveX控件?locator.ConnectServer()提示对象没有定义这个方法?singlepine(小山) :你的方法好像不行
获得用户登陆名
Request.ServerVariables.Get("LOGON_USER");
返回是空的。
http://lysoft.lz169.com/kingron/wql.htm
通过WQL语句应该可以做到,手边没有MSDN,你自己查查就知道了。
再说匿名用户,一定不喜欢你去获取的本地登陆账号,太危险了.很多扫描软件都做不到的.
怎么用ActiveX解决这个问题?