コードを別のユーザーとして実行する方法はありますか?別のユーザーとしてコードを実行する(C#)
私はPInvoke経由でNetUserSetInfoを呼び出していますので、別のユーザーとして呼び出す必要があります。それを行う方法はありますか?
コードを別のユーザーとして実行する方法はありますか?別のユーザーとしてコードを実行する(C#)
私はPInvoke経由でNetUserSetInfoを呼び出していますので、別のユーザーとして呼び出す必要があります。それを行う方法はありますか?
偽装は、いくつかのネイティブAPI(すなわち、LogonUserの)を呼び出す必要ですので、それはおそらく、の3ページを掲示する価値はありませんラッパーコード。このページには、完全な実例があります。http://platinumdogs.wordpress.com/2008/10/30/net-c-impersonation-with-network-credentials/
偽装には重要なセキュリティ上の考慮事項があります。ベストプラクティスに従ってください。
このarticleはかなり簡潔にそれを説明する:ここで
は、記事からコードスニペットです:
IntPtr accessToken = IntPtr.Zero;
....
//You have to initialize your accessToken with API calling
....
WindowsIdentity identity = new WindowsIdentity(accessToken);
WindowsImpersonationContext context = identity.Impersonate();
...
// Now your code is using the new WindowsLogin and you can do what ever this login can do
...
//Now you can return to your current login of Windows
context.Undo();
は、おそらく最高の、私がこれまで見てきたクリーンcodeちょうどGithubまたはNugetに従ってください。この
using (Impersonation.LogonUser(domain, username, password, logonType))
{
// do whatever you want as this user.
}
です。
これは確かに実装が簡単でしたが、動作していることを確認することはできません。私はprocess.start( "cmd.exe")を実行し、プロセスは偽装されたIDではなくプログラムを起動したIDによって所有されていることを示しています。私は何が欠けていますか? –
はい偽装は、異なるユーザーとして一部のコードを実行するのに役立ちます。私の場合はうまく動作します。 (Thanks to MilanMatějka)
私はRefリンクも見つかりました。それはあなたが簡単にnugetからパッケージを得るのを助けることを願っています: http://iamfixed.blogspot.de/2017/11/run-code-as-different-user-in-c-from.html
記事のコードがなくなっています。 –