6

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

4

2 に答える 2

1

この例で作業したところ、実際には正常に動作します。このコンテキストでコードを実行したい場合は、次の方法で現在のスレッド プリンシパルを設定する必要があると思います。

Thread.CurrentPrincipal = new System.Security.Principal.WindowsPrincipal(WindowsIdentity.GetCurrent());
于 2013-09-27T12:55:02.323 に答える
0

Windows サービスを作成している場合、偽装するユーザーが「サービスとしてログオン」権限を持っている限り、orLOGON32_LOGON_SERVICEの代わりに使用すると特権トークンが生成されます。LOGON32_LOGON_INTERACTIVELOGON32_LOGON_NEW_CREDENTIALS

これは一般的な解決策ではありません (ユーザー向けのアプリケーションを作成している場合は機能しません) が、私が抱えていた特定の問題を解決するには十分です。

于 2013-09-27T16:40:59.523 に答える