Asp classic 无法正确解析用户环境变量

Asp classic 无法正确解析用户环境变量,asp-classic,environment-variables,user-profile,wsh,Asp Classic,Environment Variables,User Profile,Wsh,我正在尝试使用WScript.Shell解析%USERPROFILE%。当我创建一个vbs文件并直接从Windows运行时,我获得了登录用户C:\Documents and Settings\Administrator的正确路径,但当我在IIS本地计算机上运行的经典ASP webapp中使用它时,它被解析为C:\Documents and Settings\Default user,而不是登录用户 我使用的代码如下 var oShell = new ActiveXObject("Wscript.

我正在尝试使用
WScript.Shell
解析
%USERPROFILE%
。当我创建一个vbs文件并直接从Windows运行时,我获得了登录用户
C:\Documents and Settings\Administrator
的正确路径,但当我在IIS本地计算机上运行的经典ASP webapp中使用它时,它被解析为
C:\Documents and Settings\Default user
,而不是登录用户

我使用的代码如下

var oShell = new ActiveXObject("Wscript.Shell");
var userPath = oShell.ExpandEnvironmentStrings("%USERPROFILE%");
从webapp检索值时,是否需要检查权限/设置以获得正确的
USERPROFILE


PS:我正在使用javascript进行编码。

ASP不知道登录的用户是什么,它在一个通用的匿名internet用户帐户下运行

如果希望IIS了解当前用户,则必须删除匿名用户在站点目录上的权限。这将强制IIS向用户显示登录屏幕。
登录后,该会话的线程将在登录用户下运行(因此请确保该用户具有权限)。现在可以使用request.servervariables(“AUTH_USER”)获取用户名


Erik

选择此站点的windows身份验证(IIS配置)而不是匿名。这种安全性在IIS中称为NTLM,使用标准NTFS权限授予文件夹和文件的权限,当使用IE作为浏览器时,不提示登录(单点登录),如果使用FF,则每个会话必须登录一次。这里是一个ASP页面,显示服务器端可用的所有变量。如果需要,您可以将这些变量传递给客户端代码,但最好不要使用ActiveX进行身份验证(在大多数情况下)

”文件servervaraibles.asp

我想你要问的问题的答案是:不

ASP不能按需加载和卸载用户配置文件,甚至可以假定服务器为每个用户都有一个配置文件(每个用户必须至少以交互方式登录到服务器一次)

最好是关闭应用程序的匿名访问,以便服务器变量“AUTH_USER”包含该用户唯一的用户名。为AUTH_用户中可能出现的每个域创建一个公共网络共享(您可能只有一个)。在该网络下为每个用户创建共享文件夹,并授予相应的访问权限


现在,您可以解析AUTH_USER并确定可以为当前请求用户加载和保存文件的根路径。

是什么让您认为“默认用户”不是正确的值?ASP没有在当前交互会话中运行,它是作为服务运行的。我应该写“需要”而不是“正确”。那么,从ASP中检索登录用户的配置文件是否仍然存在?如果您描述一下为什么这样做是可取的,可能会更好?ASP应用程序和当前交互会话之间可能存在什么耦合(请注意,可以有多个,甚至可以没有)?您想从配置文件中查找什么类型的信息?@AnthonyWJones我想检索登录用户的用户配置文件(最好是文档文件夹)以及保存文件的路径。每个用户都使用自己的帐户登录系统,我不希望任何人看到其他人的文件。这有意义吗?我不理解你关于ASP应用程序和当前会话之间耦合的问题。你可能会有很多误解,我正试图找出你有哪些误解。ASP应用程序与服务器上的任何当前交互会话之间没有关系。这让我得出结论,您实际上希望将用户的配置文件加载到客户机(浏览器运行的不是服务器),并以某种方式将文件放置在用户所在的位置(我假设至少您理解这意味着我的文档必须在网络共享上漫游)。这是不可能的。
'file servervaraibles.asp
<html>
<%@language=VBScript%>
<%
  With Response
    .Expires=-1
    .Clear
  End With
  dim teller
  response.write "<h1>Servervariables</h1>"
  response.write "<table>"
  teller = 1
  for each subkey in Request.Servervariables
    response.write "<tr><td>"
    response.write teller
    response.write "</td><td>"
    response.write (Request.Servervariables.Key(teller))
    response.write "</td><td>"
    response.write (Request.Servervariables.Item(teller))
    response.write "</td></tr>"
    teller = teller + 1 
  next
  response.write "</table>"
  response.write request.servervariables("path_translated") & "<br>"
  response.write "USER cookie:" & Request.Cookies("USER") & "<br>"
  response.write "USER Sessionvariable:" & Session("USER") & "<br>"
%>
</html>