不知道为什么朋友会有这样奇怪的要求。需要使用ASP得到浏览者的Windows登录名。没有找到合适的办法。只想到了这一种办法。就是使用服务器端组件与客户端组件使用Socket进行通迅。由ASP调用服务器组件使用Socket向浏览者的计算机上运行着的客户端组件发送请求,客户端组件取得浏览者的Windows登录名,再使用Socket返回给服务器组件。服务器组件再将结果返回给ASP程序。
服务器组件和客户端程序都是使用VB6编写:
解决方案:使用ASP取得客户端Windows用户登录名
没有查到ASP如何取得客户端Windows登录名。所以只好使用组件完成。
已经确认ASP服务器脚本无法创建客户端组件。故只好使用服务端Com组件与客户端组件通过Socket通迅完成。所以需要服务器和客户端都安装组件。
原理:
客户端浏览器访问ASP文件,ASP文件取得客户端的IP地址,创建服务器组件“ZXSOFT.GetUserName”,并将客户端IP地址做为参数传给服务器组件。服务器组件通过Socket使用TCP协议与客户端通迅。客户端取得本地计算机Windows登录名。并使用Socket回传给服务器组件。ASP文件通过服务器组件的方法取得这个客户端的Windows登录名。
目录结构说明:
Release
|
------Client EXE ----每台客户端机器都必须安装的程序。应设为开机自动运行
|
------Sample ASP ----使用此解决方案的ASP例子
|
------Server Com DLL ----服务器的Com组件。使用Regsvr32在ASP服务器上注册
SRC
|
------服务端Com组件 ----服务器Com组件的VB6源代码
|
------客户端 ----客户端的VB6源代码
服务器组件说明:
组件名称:zxsoft.GetUserName
ASP创建方法:set getUserName=Server.CreateObject("zxsoft.GetUserName")
方法列表: GetUserName(IP as String,Optional TimeOutSecond as String = 3 ) as String
参数说明:IP,要得到Windows登录名的客户端的IP地址
TimeOutSecond,可选项,超时时间。超过超时时间客户端没有Socket返回。则取得Windows登录名失败。默认值为3(秒)。
功能:取得安装了客户端程序的,IP地址为参数IP的客户端的Windows登录名。
返回值:字符串。取得的Windows登录名。如失败返回空字符串""。
客户端程序说明:
运行不会有任何显示。会在进程中看到GetUserName.exe。要退出需要把GetUserName.exe进程结束任务。如果客户端程序没在运行。则无法取得Windows登录名。所以建议在客户端计算机上将此程序设为开机自动运行。
Author:张旋
2007.8.2 02:10