19

全体で偽装が使用されているアプリがあります。ただし、ユーザーが管理者としてログインしている場合、いくつかの操作でサーバー自体に書き込む必要があります。これらのユーザーが実際のサーバーで権限を持っていない場合 (一部のユーザーは持っていない場合)、書き込みは許可されません。

私がやりたいのは、いくつかのコマンドで偽装をオフにすることです。

このようなことをする方法はありますか?

using(HostingEnvironment.Impersonate.Off())
  //I know this isn't a command, but you get the idea?

ありがとうございました。

4

4 に答える 4

24

アプリケーション プールに必要な適切な権限があることを確認してください。

次に、アプリケーション プール ID に戻したい場合は、次のコマンドを実行します。

private WindowsImpersonationContext context = null;
public void RevertToAppPool()
{
    try
    {
        if (!WindowsIdentity.GetCurrent().IsSystem)
        {
            context = WindowsIdentity.Impersonate(System.IntPtr.Zero);
        }
    }
    catch { }
}
public void UndoImpersonation()
{
    try
    {
        if (context != null)
        {
            context.Undo();
        }
    }
    catch { }
}
于 2008-10-20T03:25:02.403 に答える
2

これが好ましいアプローチかどうかはわかりませんが、これをやりたいと思ったときに、WindowsIdentityのインスタンスを新しく作成し、 Impersonateメソッドを呼び出しました。これにより、後続のコードが別の Windows ユーザーになりすますことができます。偽装コンテキストを元に戻す Undoメソッドを持つWindowsImpersonationContextを返します。

于 2008-09-24T03:14:19.837 に答える
0

「認証されたユーザー」にフォルダーの書き込み許可を与えることになりました

于 2008-09-24T05:33:00.690 に答える
0

ページの認証をオフにしてから、コードの残りの部分で認証済みユーザーを手動で偽装することができます。

http://support.microsoft.com/kb/306158

これには最後の部分への参照がありますが、基本的に User.Identity になりすます

これは、ページへの呼び出しの最初に偽装し、必要なときにオフにし、完了したら再びオンにする必要があることを意味しますが、これは実行可能な解決策です。

于 2008-09-24T03:43:14.853 に答える