Win2000、XP、および Vista で LocalSystem アカウントで実行するサービスを設計しています。ユーザーがログインしている場合とログインしていない場合の両方で、ユーザーのレジストリ ハイブへのアクセスが必要になることがあります。 、ロードしようとしません。)
ユーザーがログオンしている場合、さまざまな手段 (たとえば、Explorer プロセスから、またはサービス コントロール マネージャーからログオン イベントを受信する) でユーザー アクセス トークンを取得し、ImpersonateLoggedOnUser と RegOpenCurrentUser を使用してユーザーのハイブにアクセスできます。しかし、私が偽装してハイブを開いているときに、ユーザーが [スタート] メニューから [ログオフ] を選択した場合、どのような影響がありますか? ログオフは防止されますか? なりすましは終了しますか?
ユーザーがログオンしていない場合は、RegLoadKey を使用してハイブ NTUSER.DAT を直接開くことができます。(ログオンしているユーザーには不可能です)。しかし、ユーザーがログオンすることを決定した場合、これはどのような意味を持ちますか (ハイブがロックされ、ログオンが妨げられるか、または問題が発生する可能性があると思いますか?)
これらのアイデアを調査するためにいくつかのテスト プロジェクトを設定しますが、明らかな結果に関係なく、これらの質問は、ユーザーによるこれらのアクション中にログイン/ログアウトすることによってどのような種類の問題が発生する可能性があるか、または発生するかという点で理論的なものです。サービス。
警告: ImpersonateLoggedOnUser は、ログオンしているユーザー (プロセスまたは SCM イベントから取得したトークン)、または WinLogon を呼び出してトークンを取得するためのプレーンテキスト パスワードを持っているユーザーに対してのみ使用できます - TRUE / FALSE ? つまり、私は LocalSystem として最大の権限を持っており、ユーザーのパスワードを変更したり、ユーザーのアカウントを削除したりすることさえできますが、ユーザーがログオンしていない場合、新しいトークンを作成してユーザーを偽装することはまったく不可能です。パスワード?