3

私が書いているストレートな WIN32API プログラム (MFC も .NET もありません) は、レジストリを使用します。レジストリ エラーが発生した場合、失敗したキーのフル パスを出力したいと思います。

HKEY_CLASSES_ROOT、HKEY_CURRENT_CONFIG、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、および HKEY_USERS は、HKEY (DWORD) 値 (HKEY_CLASSES_ROOT の場合は 0x8000000) などです。サブキーは、値の名前と同様に LPCTSTR です。

HKEY、サブキー、および値の名前を変換する方法はありますか (リダイレクトを含む (http://msdn.microsoft.com/en-us/library/windows/desktop/ms724072(v=vs.85).aspx))テキスト文字列に?

HKEY のテーブルを自分で作成できることはわかっていますが、それらが変更される可能性は低いですが、それを行うには粗雑な方法です。

4

2 に答える 2

3

私が知っているそのような API はありません。名前を与える唯一のレジストリ関数はRegEnum...関数であり、開いているキーに関連する名前を与えます。

逆方向 (HKEY から名前) への要求はあまりないため、レジストリはおそらく共通方向 (名前から HKEY) でのみインデックスが作成されます。

階層をナビゲートするときは、自分で名前を追跡する必要があります。

于 2012-10-11T17:10:40.163 に答える
3

おそらく価値はありませんが、ntdll のNTQueryKey( ZwQueryKey) をKEY_INFORMATION_CLASS.KeyNameInformation使用してレジストリ ハンドルを「パス」文字列に変換できますが、最終的にはフォーマット\REGISTRY\USERの代わりになりHKEY_CURRENT_USERます。

于 2012-10-12T10:20:15.133 に答える