Can I turn off impersonation just in a couple instances
Solution 1:
Make sure the Application Pool do have the proper rights that you need.
Then, when you want to revert to the application pool identity... run the following:
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 { }
}
Solution 2:
I am not sure if this is the preferred approach but when I wanted to do this I new'd up an instance of a WindowsIdentity and called the Impersonate method. This allows subsequent code to impersonate a different Windows user. It returns a WindowsImpersonationContext that has an Undo method which reverts the impersonation context back again.