4

これら 2 つの API は非常に似ていますが、どのような違いがあり、それぞれをいつ使用する必要があるかは不明です (ただし、私が使用していない CreateProcessAsUser で使用するために LoadUserProfile が指定されていることを除きます。単にハイブ アクセスを偽装しているだけです)。

LoadUserProfile http://msdn.microsoft.com/en-us/library/bb762281(VS.85).aspx

RegOpenCurrentUser http://msdn.microsoft.com/en-us/library/ms724894(VS.85).aspx

サービスとレジストリの記事: http://msdn.microsoft.com/en-us/library/ms685145(VS.85).aspx によると、偽装するときは RegOpenCurrentUser を使用する必要があります。

しかし、ユーザー プロファイルがローミングしている場合、RegOpenCurrentUser は何をする必要がありますか?それをロードする必要がありますか?

これらのドキュメントからわかる限り、両方の API は、スレッドが偽装しているユーザーの HKEY_CURRENT_USER へのハンドルを提供します。したがって、どちらもハイブを「ロード」します。つまり、ハイブをデータベース ファイルとしてロックし、レジストリ API のハンドルを渡します。

LoadUserProfile はユーザーがログオンするときと同じ方法でユーザー プロファイルをロードするように見えるかもしれませんが、RegOpenCurrentUser はそうではありません - これは正しいですか? これら 2 つの API がハイブをマウントする方法の根本的な違いは何ですか?

何が起こるかの意味と違い(もしあれば)は何ですか

  1. これらの偽装された各ハンドルが既に使用されているときに、ユーザーがログオンまたはログオフしますか?

  2. 一致する各クローズ関数 (RegCloseKey および UnloadUserProfile) が呼び出されたときに、ユーザーは既にログオンしていますか?

4

3 に答える 3

1

しかし、ユーザー プロファイルがローミングしている場合、RegOpenCurrentUser は何をする必要がありますか?それをロードする必要がありますか?

プロファイルをロードしません。このように考えてみてください:もしそうなら、へUnloadUserProfile()のハンドルで終了したときに何らかの方法で呼び出す必要がありますHKEY_CURRENT_USER

LoadUserProfile はユーザーがログオンするときと同じ方法でユーザー プロファイルをロードするように見えるかもしれませんが、RegOpenCurrentUser はそうではありません - これは正しいですか?

はい。

これら 2 つの API がハイブをマウントする方法の根本的な違いは何ですか?

なし。

これらの偽装された各ハンドルが既に使用されているときにユーザーがログオンまたはログオフした場合の影響と違い (ある場合) は何ですか?

それらは、開いたり閉じたりする (同じキーへの) 独自のハンドルを取得します。

一致する各クローズ関数 (RegCloseKey および UnloadUserProfile) が呼び出されたときに、ユーザーは既にログオンしていますか?

同上。

于 2009-05-08T04:56:28.920 に答える
1

私は現在、あなたと同じことを達成しようとしているので、ここ数日で見つけたものに手を差し伸べようと思いました.

私は Windows XP sp3 環境で作業しており、2 つの異なるシナリオで CurrentUser レジストリ アクセスを使用して偽装を試みています。

何か役に立つものに出くわした場合は、経験を共有していただければ幸いです。私のスタックオーバーフローの質問はここにあります

管理者 > 限定ユーザー & 限定ユーザー > 管理者

これまでに気づいたことは(Windows XP sp3で)

LoadUserProfile():

偽装ユーザーが SeRestoreName および SeBackupName 特権を有効にしている場合にのみ機能します (問題の制限付きユーザーに対してこれら 2 つを有効にするだけでは、アクセス拒否エラーで失敗したため、十分ではありませんでした。詳細については、私の StackOverflow の質問を参照してください)。これまでに正常に呼び出すことができる唯一の方法LoadUserProfile()は、偽装を開始する前に管理者アカウントで呼び出すことです。

RegOpenCurrentUser():

ユーザーのプロファイルが既に読み込まれている場合にのみ「適切に」機能します。これまでに行ったすべての試みで、ユーザーのハイブが読み込まれてアクセス可能でない限り、S-1-5-18 ハイブへのハンドルしか取得できませんHKEY_USERS はすでに

于 2010-12-09T16:25:26.980 に答える
0

2 つの機能は、さまざまな状況で使用されます。

LoadUserProfileユーザー プロファイルがまだ読み込まれていない場合に適しています。

RegOpenCurrentUserユーザー プロファイル既に読み込まれている場合、つまり、既に対話的にログオンしているユーザーのレジストリ ハイブにアクセスする場合に適しています。

LoadUserProfileは通常、偽装せずに呼び出されますが (使用するには管理者権限が必要なため)、偽装RegOpenCurrentUserして呼び出す必要があることに注意してください。

于 2016-07-29T02:24:42.253 に答える