メーリングリスト等の質問を見ていると、ASP.NETがどのユーザの権限で実行されているかがわからないためにとまどっている人も多いようです。
また、設定によっても、実行時ユーザは変化しますので、確認するサンプルをつくってみました。
-------------------------------------------------------
<%@ Page language="c#" %>
<%@ Import NameSpace="System.Security.Principal" %>
<script runat="server">
public void Page_Load(Object sender, EventArgs e) {
Label1.Text = "現在の実行ユーザ:<br>";
Label1.Text += (WindowsIdentity.GetCurrent()).Name;
}
</script>
<html>
<body>
<asp:Label id="Label1" runat="server" />
</body>
</html>
-------------------------------------------------------
XPマシンのIIS上でこのサンプルを実行した場合、マシン名\ASPNET というユーザの権限で実行されていることが確認できるはずです。
Web.Config内に
-------------------------------------------------------
<configuration>
<system.web>
<identity impersonate="true" />
</system.web>
</configuration>
-------------------------------------------------------
というような感じで設定をすると、実行時ユーザは
マシン名\IUSR_マシン名
に変わります。
また、この状態で匿名アクセスを不許可にすると、今度はログオンしているユーザに変わります。
偽装の設定をすれば、そのユーザに変わることも確認できます。
こういった形で実行時ユーザを確認すると、必要なユーザに必要な権限を与えることができるかと思います。
あおい情報システム株式会社 小野修司(どっとねっとふぁん)