2013-09-27 23 views
6

Windows Vista以降では、LogonUserは、ユーザーが管理者であっても、非特権トークンを返します。したがって、そのトークンを使用して偽装すると、あなたは昇格しません。管理者ユーザーの正しいユーザー名とパスワードが与えられている場合、その管理者の権限が昇格されたコードをどのように実行しますか?ユーザー名とパスワードが与えられた場合、そのユーザーをどのように偽装しますか?

+0

ADアカウントまたはローカルアカウントを偽装しますか? – Botonomous

+1

主にActive Directoryですが、ローカルでもうまくいくとは限りません。 –

答えて

0

あなたがになります代わりにLOGON32_LOGON_INTERACTIVELOGON32_LOGON_SERVICELOGON32_LOGON_NEW_CREDENTIALSを使用して、Windowsサービスを作成している場合あなたが偽装したいユーザーが「サービスとしてログオンする」権限を持っている限り、特権トークンを使用することができます。

これは一般的な解決法を提供しません(ユーザー向けアプリケーションを作成する場合は機能しません)が、問題の解決には十分です。

1

ちょうどthis exampleで作業しましたが、実際にはうまくいきます。 私はあなたがこのコンテキストでコードを実行したい場合は、あなたがして、現在のスレッドのプリンシパルを設定する必要がありますね:

Thread.CurrentPrincipal = new System.Security.Principal.WindowsPrincipal(WindowsIdentity.GetCurrent()); 
関連する問題