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

Multithreading 如何在Delphi中读取web应用程序上的域连接用户,multithreading,delphi,web,Multithreading,Delphi,Web,应用程序必须读取所连接的域用户才能执行某些操作。 当应用程序是exe文件时,一切正常。所有函数(GetUserName、GetUserNameA、GetUserNameW和GetUserNameEx)都返回正确的值,但当应用程序是web应用程序时,这些函数将返回IUSR\uu(pc\u name)user!!。 如何读取运行navigator的真正连接用户(而不是internet用户名?您根本误解了web应用程序和桌面应用程序之间的区别。作为来自浏览器的请求的结果,web应用程序将作为您正在运行

应用程序必须读取所连接的域用户才能执行某些操作。 当应用程序是exe文件时,一切正常。所有函数(GetUserName、GetUserNameA、GetUserNameW和GetUserNameEx)都返回正确的值,但当应用程序是web应用程序时,这些函数将返回IUSR\uu(pc\u name)user!!。
如何读取运行navigator的真正连接用户(而不是internet用户名?

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

不,我理解这两种应用程序之间的区别。
问题是当调用GetUserName时如何运行exe文件(例如,8053端口触发exe文件并作为web应用程序、Unigui应用程序在navigator上运行)将实际连接的用户返回到域,但当调用GetUserName时以dll()形式运行应用程序时,将返回IUSR_pcName(pcName)用户。。。也许读用户形成一个线程。我怎样才能知道谁是真正的用户连接(也不是IUSR_uPCName)),是否还有其他类似于GetUserName的Windows API函数?

这与您的Web应用程序无关,在您的Web服务器上激活域身份验证?什么是“导航器”?它在哪里运行?您根本误解了web应用程序和桌面应用程序之间的区别。作为来自浏览器的请求的结果,web应用程序将作为您正在运行的任何web服务器软件的派生进程运行(我假设根据您引用的用户名判断为IIS)。此浏览器可以在世界任何地方的任何设备上运行。您的web服务器将在该服务器的专用用户帐户下运行,这就是为什么您对GetUserNamex的调用返回IUSER_xxx,因为您的web应用程序进程与web服务器软件在同一帐户下运行。@KenWhite谢谢。我相应地补充了一个答案。