ファイル指定をソフトコーディングする方法は?

このQ&Aのポイント
  • VC++ 6.0で開発している場合、RegLoadKey関数を使用してntuser.datを読み込む方法を知りたいです。
  • 現在、ハードコードでファイルのパスを記述していますが、OSに依存しないようにソフトコーディングしたいです。
  • どのような方法でソフトコーディングを行えば良いでしょうか?お手数ですが、ご教授いただけますと幸いです。
回答を見る
  • ベストアンサー

ファイル指定を、ハードコードではなく、ソフトコーディング(?)したい

お世話になります。 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を読み込めるようにしたいのですが、どのようにすればよいでしょうか? お手数ですが何卒よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

98を除けばGetUserProfileDirectory関数を使えば希望のディレクトリパスがとれますが、 98も対象にすると、SHGetSpecialFolderLocationもしくはSHGetSpecialFolderPathを使うことになります。 (ちゅうか、リンク先に書いてあるのを読めばわかるはず) リンク先の SHGetSpecialFolderLocation関数のコードそのままで、 ディスクトップのパスを取って、パスを分解し、ntuser.datをつければ終わり。 (_splitpath,_makepathを組み合わせるもしくは、自力で一番最後の\を探して、それ以降の文字をntuser.datに置換する。)

kgyqk433
質問者

お礼

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

その他の回答 (1)

回答No.1
kgyqk433
質問者

お礼

ご返事ありがとうございます。 同様なものを、こちらに質問前に見たのですが、どのコードが対応するのかわかりませんでした。。。 再度、bluecampus様が指定したURLを見たのですが、どれが対象なのかわからない次第です。 ご迷惑をおかけしまして申し訳ございませんが何卒よろしくお願いします。

関連するQ&A

  • バッチファイルでCOPYができない。

    バッチファイルを作成するのが初めてでしてうまくいきません。 copy /Y "C:\Documents and Settings\(ユーザー名)\test.txt" sample\ というコードを実行してみたんですが、 C:\Documents and Settings\(ユーザー名)>copy /Y "C:\Documents and Settings\(ユーザー名)\test.txt" sample\ だとできて、 C:\Documents and Settings>copy /Y "C:\Documents and Settings\(ユーザー名)\test.txt" sample\ だとできません。 (実行する場所によって違うということです) どこで実行してもできるようにしたいのですがどうすればよろしいですか?

  • ntuser.datファイル

    C:Documents and Settings¥○○○に、 ntuser.datというファイルと、ntuser.dat.LOGというファイルがあります。 他のものはみなフォルダにしまわれてるのですが、これだけがファイルであります。何をするものでしょうか?何かの消し忘れでしょうか?気になります。 どこにしまうべきものでしょう?消そうとしても消えません。ほかの人またはプログラムによって使用されています。すべて閉じてから・・とでます。実行ファイルが何だかわからないので開く事もできないです。(消してしまってるんだと思います) 何かわかる方教えて下さい。(IE6.0 バイオ)

  • ntuser gom playerメディアファイル

    cドライブ¥documents and settings¥ユーザー名を開くと ntuser gom playerメディアファイル(dat)が在ります。 検索するとWindowsファイルで削除してはいけないそうです、ただ気になるのはアイコンがgom playerのアイコンに成っていることです。 今のところ不具合はありませんが気になって?。そのままでも良いのでしょうか。アドバイスお願いします。

  • ntuserについて

    知らないうちにC:ドライブのDocuments and Settingsのフォルダ内に「ntuser」というDATファイルがありました。これってウイルスなのでしょうか?誰か教えてください。よろしくお願いします。

  • ntuser.datとntuser

    Cドライブ→Documents and Settings→マイドキュメントの中に 「MSSSerif96」「ntuser(DATファイル)」「ntuser.dat(テキス トドキュメント」が作成されています。 これは削除する必要はありませんか? また、削除する方法は?

  • OEを開くとエラーが……。

    今までWin98を使っていたのですが、今度新しくノートパソコンを買い、XPになりました。 それで、ノートのOutlookExpressに今まで使っていたアドレス帳や受信したメールを移そうとしたのです。 そのときに、ツール→オプション→メンテナンスでフォルダの保存先をみたところ、”¥C:Documents and Settings¥○○○(自分のユーザー名)¥Local Settings¥……(以下長いので略します)”と出ていたのです。でも、○○○の階層でLocal Settingsのフォルダがどうしても見つからなかったので(後からココをみてわかったのですが、隠しフォルダだったんです)、ツール→オプション→メンテナンスでメールに関するファイルの保存先をDocuments and Settingsのひとつ下にある自分のユーザーの階層に変更し、そこにWin98でコピーしてきた、メールに関するファイル(例えば、受信トレイ.dbx等)を置いてしまったのです。 そうして、再起動したところ、エラーが出て、そこに置いたファイルはcleanupというファイル以外全て消えてしまい、次からOutlookExpressを開くと、 「ntuser.datを削除できません。他のひと、またはプログラムによって使用されています。使用している可能性のあるプログラムなどを全て閉じてからやり直してください」というエラーメッセージがでるのです。 そして、¥C:Documents and Settings¥○○○(自分のユーザー名)を開いてみると、確かにntuser.datというテキストファイルと、NTUSERというDATファイル(両方とも隠しファイル)があり、両方とも削除しようとしても、上と同じエラーメッセージが出て削除できません。 どうしたら元に戻るのでしょうか? ちなみにノートパソコンの機種はSHARPのメビウスです。

  • アプリケーションログのエラーについて

    Windows2000 Pro SP4 以下の内容のエラーログがPC起動時に発生しました。どのような原因で発生するのか教えて下さい。よろしくお願いします。 イベントの種類: エラー イベント ソース: Userenv イベント カテゴリ: なし イベント ID: 1000 日付: 2006/10/16 時刻: 11:40:59 ユーザー: PCName\Administrator コンピュータ: PCName 説明: ファイル C:\Documents and Settings\Default User\NTUSER.DAT をロケーション C:\Documents and Settings\Administrator.PCName\NTUSER.DAT にコピーできません。ネットワーク管理者に問い合わせてください。 詳細 - プロセスはファイルにアクセスできません。別のプロセスが使用中です。

  • XPのCドライブがパンクしそうです。

    Cドライブは32Gで空き容量が2Gしかなくなっていました。 Documents and Settings→Administrator の中に ntuser.dat というファイルがあり、 これだけで12Gもありました。 空き容量が少なくデフラグも出来ないし、困っています。 .dat のデータ量を減らす方法をお教え願います。

  • インターネット一時ファイルの一部を削除できない

    EasyCleaner2.0というソフトで、「不要ファイル:インターネット一時ファイル」を検索すると C:\Documents and Settings\ユーザ名\Local Settings\Temporary Internet Files\Content.IE5 (フォルダ:サイズ:0) C:\Documents and Settings\ユーザ名\Local Settings\Temporary Internet Files\Content.IE5\index.dat(DATファイル:サイズ: 8978432) と2つ出て、これらを削除しようとすると、これらのファイルは 使用中で削除できません。となります。 ちなみに削除中にはブラウザはすべて閉じています。 削除できないこの2個のファイルとフォルダはいったい 何なのでしょうか?ちなみブラウザはIE6を使用しており、 IE5なんて使ってないのですが。。。 お分かりの方がいましたらぜひ教えてください。

  • 外付けHDDへのバックアップ方法と、復旧の手順

    質問が何点かあるのですが、 1:USB2.0接続の外付けHDDを買ったのですが、内蔵HDDのCドライブを丸ごとバックアップ出来ないのは何故ですか?(容量は外付けの方が大きいのです) 2:Cドライブ>Documents and Settings>【メインで使ってるユーザー名のフォルダ】内を全部バックアップを取ろうと思ったんですが、以下のファイルがコピーできなかったようです。 AcrF414.tmp UsrClass.dat UsrClass.dat.LOG ntuser.dat ntuser.dat.LOG CardSpaceSP2.db CardSpaceSP2.db.shadow このうち、ntuser.datファイルはネットで調べたら”Windowsの各ユーザー設定が保存されているファイルです。”との事ですが、このファイルが保存できなければバックアップの意味が薄れると思います。しかし、他のユーザー名(管理者)でログインすればコピーできるようですが(?)、この方法で外付けHDDに保存しておけば良いでしょうか? また、もしそれがマズイとすれば、具体的にもしCドライブ(内蔵HDD)がダメになってしまった時は、どのようにトラブル前の状態に復旧できるのでしょうか。 3:上記の、コピーできなかったファイルのうち、ntuser.datファイル以外のものはそれぞれどういうものでしょうか?また、これらはバックアップできなくても、いざデータの復旧が必要になった時には差し支えのないファイルなのでしょうか。 3つもあってすみませんが、分かるものだけでもけっこうなのでよろしくお願いしますm(_ _)m