ASP读取客户端Windows登录名的解决方案

不知道为什么朋友会有这样奇怪的要求。需要使用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

你可能感兴趣的:(windows)