0

%USERPROFILE%を使用して解決しようとしていますWScript.Shell。vbsファイルを作成してWindowsから直接実行すると、ログインユーザーの正しいパスが取得されますが、IISのローカルマシンで実行されている従来のASP Webアプリ内で使用すると、ログインユーザーC:\Documents and Settings\Administratorではなく解決されます。 C:\Documents and Settings\Default User

使用したコードは以下の通りです

var oShell = new ActiveXObject("Wscript.Shell");
var userPath = oShell.ExpandEnvironmentStrings("%USERPROFILE%");

Webアプリから値を取得するときに正しい値を取得するために確認する必要がある権限/設定はありますUSERPROFILEか?

PS:私はJavaScriptを使ってコーディングしています。

4

3 に答える 3

0

ASPは、どのユーザーがログインしているかを認識していません。一般的な匿名インターネットユーザーアカウントで実行されます。

IISに現在のユーザーを認識させたい場合は、サイトのディレクトリにある匿名ユーザーの権限を削除する必要があります。これにより、IISはユーザーにログイン画面を表示します。
ログイン後、そのセッションのスレッドはログオンしたユーザーの下で実行されます(したがって、ユーザーに権限があることを確認してください)。これで、request.servervariables( "AUTH_USER")を使用してユーザー名を取得できます。

エリック

于 2012-08-28T10:08:02.640 に答える
0

匿名ではなく、このサイトのWindows認証(IIS構成)を選択します。この種のセキュリティはIISではNTLMと呼ばれ、フォルダーとファイルに対する標準のNTFSアクセス許可を使用して権限が付与されます。ブラウザーとしてIEを使用する場合、プロンプトは表示されません。ログオン(シングルサインオン)。FFを使用する場合は、セッションごとに1回ログオンする必要があります。ここに、サーバー側で使用可能なすべての変数を表示するASPページがあります。必要に応じて、これらの変数をクライアントコードに渡すことができます。認証のために、ActiveXを使用しない方がよいでしょう(ほとんどの場合)。

'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>
于 2012-08-28T10:20:30.453 に答える
0

あなたが尋ねていると思う質問への答えは:いいえ。

ASPは、ユーザープロファイルをオンデマンドでロードおよびアンロードすることはできません。また、サーバーにすべてのユーザーのプロファイルがあると想定することもできます(各ユーザーは、少なくとも1回はサーバーにインタラクティブにログオンする必要があります)。

最善の方法は、アプリケーションの匿名アクセスをオフにして、サーバー変数「AUTH_USER」にそのユーザーに固有のユーザー名が含まれるようにすることです。AUTH_USERに表示される可能性のあるドメインごとに共通のネットワーク共有を作成します(おそらく1つしかありません)。そのネットワークの下に作成し、ユーザーごとにフォルダーを共有し、適切なアクセス権を付与します。

これで、AUTH_USERを解析し、現在のリクエストユーザーのファイルをロードおよび保存できるルートパスを決定できます。

于 2012-08-28T14:59:12.990 に答える