プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。

VC++ 6.0で開発しております。

RegLoadKey関数を使用して、ntuser.datを読み込みたいのです。

下記のようにハードコードで記載すると正常に動作します。
RegLoadKey(HKEY_USERS,szSid,_T("C:\\Documents and Settings\\ユーザー名\\\\ntuser.dat)

しかしながら、「"C:\\Documents and Settings\\ユーザー名\\\\ntuser.dat」を
ハードコードではなく、どのOSにも対応できるようにOSに依存しないように、ソフトコーディング(?)してntuser.datを読み込めるようにしたいのですが、どのようにすればよいでしょうか?

お手数ですが何卒よろしくお願いします。

A 回答 (2件)

98を除けばGetUserProfileDirectory関数を使えば希望のディレクトリパスがとれますが、


98も対象にすると、SHGetSpecialFolderLocationもしくはSHGetSpecialFolderPathを使うことになります。
(ちゅうか、リンク先に書いてあるのを読めばわかるはず)

リンク先の
SHGetSpecialFolderLocation関数のコードそのままで、
ディスクトップのパスを取って、パスを分解し、ntuser.datをつければ終わり。
(_splitpath,_makepathを組み合わせるもしくは、自力で一番最後の\を探して、それ以降の文字をntuser.datに置換する。)
    • good
    • 0
この回答へのお礼

ご返事ありがとうございます。

どの関数は使うかなんとなくわかっていたのですが、調べた結果のコードが「CSIDL_DESKTOPDIRECTORY」:デスクトップなどで、私が知りたかったntuser.datがある、「C:\\Documents and Settings\\ユーザー名」を直接指定するコードがあると思っていたのです。
>リンク先の
>SHGetSpecialFolderLocation関数のコードそのままで、
>ディスクトップのパスを取って、パスを分解し、ntuser.datをつけれ
>ば終わり。
>(_splitpath,_makepathを組み合わせるもしくは、自力で一番最後
>\を探して、それ以降の文字をntuser.datに置換する。)
上記参考にしてちょっと確認してみます。

ご返事ありがとうございます。

お礼日時:2009/05/08 22:32
    • good
    • 0
この回答へのお礼

ご返事ありがとうございます。

同様なものを、こちらに質問前に見たのですが、どのコードが対応するのかわかりませんでした。。。

再度、bluecampus様が指定したURLを見たのですが、どれが対象なのかわからない次第です。

ご迷惑をおかけしまして申し訳ございませんが何卒よろしくお願いします。

お礼日時:2009/05/08 17:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!