これら 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 がハイブをマウントする方法の根本的な違いは何ですか?
何が起こるかの意味と違い(もしあれば)は何ですか
これらの偽装された各ハンドルが既に使用されているときに、ユーザーがログオンまたはログオフしますか?
一致する各クローズ関数 (RegCloseKey および UnloadUserProfile) が呼び出されたときに、ユーザーは既にログオンしていますか?