qui hai la spiegazione delle api windows da utilizzare:
http://www.codeproject.com/Articles/124981/Impersonating-user-accessing-files-and-HKCU
e qui un paio di classi managed già pronte che ti permettono di cambiare l'utente per una parte di codice così:
using ( new Impersonator( "myUsername", "myDomainname", "myPassword" ) )
{
...
<code that executes under the new context>
...
}
http://www.codeproject.com/Articles/10090/A-small-C-Class-for-impersonating-a-User
http://freshclickmedia.co.uk/2008/11/programmatic-impersonation-in-c/
Michael Denny | Visual C# MVP
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com
http://mvp.microsoft.com/mvp/Michael%20Denny-5000735
Twitter: @dennymic