在网页中,怎么获取客户端当前计算机的登录用户? 急..

MyLf 2006-03-04 12:02:59
如题。
在google和baidu搜索了,好像没有相关的资料。。。
...全文
494 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
MyLf 2006-03-07
  • 打赏
  • 举报
回复
up
Optione 2006-03-06
  • 打赏
  • 举报
回复
像X-Scan这样扫描软件,要获取NetBios信息,只要有防火墙,都取不到的.

再说知道了登陆名,跑密码还是可以的.

反正我是不会的,很难吧,帮你顶算了.
MyLf 2006-03-06
  • 打赏
  • 举报
回复
谢谢回复。。。

这是客户的要求,说是如果员工用自己的帐号和密码登录了计算机后,进入我们的系统(B/S的),就不要再去录入用户和密码了,就可以进去了。

其实,客户这种要求是很合理的,就类似于Sql Server的以Windows身份验证的方式登录

只知道登录用户名,黑客也不能干什么啊。
Optione 2006-03-06
  • 打赏
  • 举报
回复
不通过第3方控件,基本上很难(就像楼上那位兄弟说的:微软或许有办法)

已经很清楚了,如果那样能行的话,黑客们就可以庆祝了.

你们是怎么想出要那样的?不能换别的方式吗?
MyLf 2006-03-06
  • 打赏
  • 举报
回复
不要mark了,出点主意啦。。
hyena041 2006-03-06
  • 打赏
  • 举报
回复
mark
j_lei407 2006-03-06
  • 打赏
  • 举报
回复
mark
lingbo_wx 2006-03-06
  • 打赏
  • 举报
回复
期待中
MyLf 2006-03-06
  • 打赏
  • 举报
回复
此问题无解么?
MyLf 2006-03-06
  • 打赏
  • 举报
回复
那。。。
怎么用ActiveX解决这个问题?
Optione 2006-03-05
  • 打赏
  • 举报
回复
为这点功能,没必要花这么大的代价吧.

单靠浏览器要实现这样的功能,很难.

既然永许匿名登录,用ActiveX,对匿名用户来说感觉太麻烦了.
再说匿名用户,一定不喜欢你去获取的本地登陆账号,太危险了.很多扫描软件都做不到的.
Kshatriya 2006-03-05
  • 打赏
  • 举报
回复
存到表里面不行么?
Kingron 2006-03-05
  • 打赏
  • 举报
回复
设置网页安全级别为中,允许ActiveX:
http://lysoft.lz169.com/kingron/wql.htm
通过WQL语句应该可以做到,手边没有MSDN,你自己查查就知道了。
talantlee 2006-03-04
  • 打赏
  • 举报
回复
再看看
 要想透过代理服务器取得客户端的真实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

李洪喜 2006-03-04
  • 打赏
  • 举报
回复
不太可能获得用户的登录ID吧。除非是微软可以实现。
singlepine 2006-03-04
  • 打赏
  • 举报
回复
浏览者操作系统的默认语言
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");
talantlee 2006-03-04
  • 打赏
  • 举报
回复
在做B/S结构的系统时,我们常常需要获取客户端的一些信息,如IP和MAC,以结合身份验证。在ASP.NET中,要获取服务器端的MAC很容易,但是要获取客户端的MAC的地址确要花费一翻心思,通常的做法是调用Win32API或直接调用nbtstat命令,这样做有很多问题,而另一种方法就是直接用客户端脚本,我们这里用Javascript,这样做的好处是不需要服务器端进行处理,有客户端自行获取,传递到服务器端,且速度和可靠性都比在服务器端获取好。
具体实现的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。
MyLf 2006-03-04
  • 打赏
  • 举报
回复
我当然指的是webform产生的页面啦
我是丁学 2006-03-04
  • 打赏
  • 举报
回复
单纯网页是做不到的,除非浏览者告诉你 :)
不过你可以通过ActiveX控件实现这个功能,就怕有些人会屏蔽
MyLf 2006-03-04
  • 打赏
  • 举报
回复
要是允许匿名登录,我还来问干什么?

这是B/S系统(公司内部的,如果在公司外部用,则允许匿名登录,但提供的功能有限)。用户名就是各计算机上的登录名了。

有单点登录的意思。
用户用他的计算机帐号登录后,直接打开你的网页就可以进去了,不需要再让他录入用户名和密码。
加载更多回复(5)

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧