如何在Delphi中读取Web应用程序上的域连接用户

时间:2013-12-06 13:23:44

标签: multithreading delphi web

应用程序必须读取已连接的域用户才能执行某些操作。 当应用程序是exe文件时,它没问题。所有函数(GetUserName,GetUserNameA,GetUserNameW和GetUserNameEx)都返回正确的值,但是当应用程序是Web应用程序时,该函数返回IUSR_(pc_name)user !!。 如何阅读导航器运行的真实连接用户(不是互联网用户名)?

2 个答案:

答案 0 :(得分:1)

您从根本上误解了Web应用程序和桌面应用程序之间的区别。由于来自浏览器的请求,Web应用程序将作为您运行的任何Web服务器软件(我假设IIS根据您引用的用户名判断)的生成过程运行。此浏览器可以在世界任何地方的任何设备上运行。您的Web服务器将在服务器的专用用户帐户下运行,这就是您对GetUserNamex的调用返回IUSER_xxx的原因,因为您的Web应用程序进程在与Web服务器软件相同的帐户下运行。

答案 1 :(得分:0)

不,我理解这两种应用程序之间的区别。 问题是如何运行exe文件(例如http://mydomain.com:8053端口8053触发exe文件并在导航器上作为Web应用程序运行,Unigui应用程序)在调用GetUserName时将实际连接的用户返回到域,但是当当调用GetUserName返回IUSR_(pcName)用户时,应用程序以dll(http://mydomain.com/cgi-bin/myApplication.dll)运行...也许读取用户形成一个线程。我怎么知道谁是真正的用户连接(也不是IUSR_(pcName)),是否有另一个类似于GetUserName的Windows API函数?