7

私はc#アプリケーションを書いています。

アプリケーションの一部として、ユーザーのプロファイルを読み取る必要があります。

すべてのユーザーを取得するために、を使用していRegistry.Users.GetSubKey()ます。

問題は、Windows 8 では、ログインしているHKEY_USERSユーザーのみが含まれていることです! (2 人のユーザーがログインしている場合、 の下に 2 人のユーザーが表示されますが、ユーザーの 1 人がサインアウトすると、 の下に 1 人のユーザーしか表示されません)HKEY_USERSHKEY_USERS

その結果、ログインしているユーザーのプロファイルのみを取得します。

データが保存されている場所を見つけるためにレジストリ全体を検索しようとしましたが、この情報はどこにも見つかりません....ユーザーがログアウトすると情報がなくなったようです。

それは仕様によるものですか、それともバグですか?

データの保存場所 - レジストリにあるはずですが、見つかりません...

それは許可の何かでしょうか?たぶん情報はそこにありますが、ユーザーがログインしていないときは隠されていますか? ログインしていないユーザーのプロファイルを読み取るために使用できるフラグまたは何かがありますか?

4

2 に答える 2

7

これはすべての場合に機能するとは限りませんが、私のニーズには合っています。レジストリ ハイブのロード

reg load HKU\Steven C:\Users\Steven\ntuser.dat

必要なデータを読み込み、アンロードする

reg unload HKU\Steven
于 2014-08-20T06:47:04.380 に答える
6

アプリケーションの一部として、ユーザーのプロファイルを読み取る必要があります。

次に、アプリケーションを再設計する必要があります。あなたが求めていることは不可能です。

Raymond Chen のブログ投稿「ローミング ユーザー プロファイルに注意してください」から:

[Y]HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList レジストリ キーを調べて、すべてのユーザー プロファイルを検索し、場合によってはそれらを変更することさえ期待することはできません。権威あるもの。

HKEY_USERS の下にあるか、C:\Users の下のプロファイル ディレクトリにあるかに関係なく、他のユーザーのプロファイルに関連するローカル マシン上に表示されるものはすべて、そのマシンに最後にログインしたときのローカル キャッシュです。実際のデータ、つまり最新のデータは、ドメイン コントローラーのどこかに保存されます。

他のユーザーのローカルに保存されたプロファイル データに頼ることはできませんそこにさえないふりをしたほうがいいです。

于 2012-07-11T13:06:13.377 に答える