• 締切済み

レジストリの文字列から

レジストリの設定でキーがオープンに成功し、キーの値を取得したとき(キーの種類は文字列)その値がフォルダを生成できるかのチェックはどのようにしたらいいでしょうか?例C:\BACKUP(成功)、C:BACKUP(失敗)

みんなの回答

  • macchun
  • ベストアンサー率50% (3/6)
回答No.5

Windows NT/2000/XP 等で動作させるのでしたら、以下の方法があります。 1. ファイル名を UNICODE に変換する(MultiByteToWideChar() などで) 2. ファイル名の先頭に "\\?\" を付記する(例えば、"C:\BACKUP" なら "\\?\C:\BACKUP" に変換)。 3. mkdir()/CreateDirectory() の代わりに CreateDirectoryW() を使用する。 これを行うことによって、相対パス(例えば"C:BACKUP")を指定したときにエラーが発生するようになるはずです。 ただ、この方法は Windows 95/98/Me では使用できません。もしこれらのOSも対象とする場合には、フルパスを取得して、それと相違がある場合には失敗させる方法もありますが、いかがでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.4

No1&No2とNO3に対する補足が矛盾してます。 パスとしての文字列が正しくても、実際の作成が成功するとは限りません。 "B:\folder"は文字列の並びは正しいけれど、ほとんどの場合失敗します。 "C:\winnt\newfolder"が成功するかどうかは実行するユーザによって異なります。 文字列のみで判定するなら… 1.先頭2文字は"英字:" 2.それ以降は"\フォルダ名用文字の列"が繰り返される という法則になってるはずです。 【フォルダ名用文字の列】はマルチバイト文字に注意する。 作成できるかどうかで判断するなら… CreateDirectoryして戻り値が0ならGetLastError()でエラー理由判定する。 0でないなら作成成功。

gfgdhggddg
質問者

補足

こんばんは★ //"B:\folder"は文字列の並びは正しいけれど、ほとんどの場合失敗します。 "C:\winnt\newfolder"が成功するかどうかは実行するユーザによって異なります。 上記の場合だとB:folderだと失敗するようにコーディングできたのですが下記の //文字列のみで判定するなら… ・1.先頭2文字は"英字:" 2.それ以降は"\フォルダ名用文字の列"が繰り返される という法則になってるはずです。 【フォルダ名用文字の列】はマルチバイト文字に注意する。 1.2.はどのように書いたらいいでしょうか?お願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.3

「フォルダを作成してみる」という方法でチェックしてみてはいかがでしょうか。 フォルダの作成が成功すれば、フォルダの作成は可能とみなす。 フォルダの作成に失敗したら、フォルダの作成はできないものとみなす。

gfgdhggddg
質問者

補足

じゃあCREATDIRECTORYでファイルでフォルダを作成しHFINDFILEで作成したフォルダを検索し成功したら作成できたことになりますよね?

全文を見る
すると、全ての回答が全文表示されます。
  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.2

設問が曖昧です。 > フォルダを生成できるかのチェック 「フォルダが生成できる」というのは 1.Windowsのパスとして正しければOK 2.パスの最終ノード(C:\Backup\2005\1101の場合1101)以外が存在し、最終ノードが存在しない状態であればOK 3.2の条件にセキュリティ設定を考慮する のどれですか?

gfgdhggddg
質問者

補足

曖昧ですみません><。 1はどのようにチェックしたらいいでしょうか?なるべく簡潔にするには。1文字ずつチェックしてい他にありますでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

":"の前に"\"があるのをチェックすれば良い、という事ではなくて?もっと別の事かな?

gfgdhggddg
質問者

補足

はいそれもあります。ドライブ名のチェックもですが。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C言語

    レジストリのキーから値を取得し、その取得した値の中フォルダのファイルの有無を調べあるなら他のフォルダにそのファイルをコピーしたいのですがわかりません。。。レジストリのオープンとキーの取得はわかるんですが。 例 ルートキーHKEY_LOCAL_MACHINE\SOFTWARE\HRPS\BPSS   値の名前 PathName キーの値 c:\program\HRPS このキーの値からc:\program\HRPS の中のファイル(file.c)をチェックし、あれば別のフォルダc:\program\fileの中にコピーしたいんです><

  • C言語で取得した文字列を、C++の文字列として取り扱いたいです。

    C言語で取得した文字列を、C++の文字列として取り扱いたいです。 皆さんこんにちは。 C言語で取得したchar型で定義された文字列を、 C++の「std::string」に渡したいと思っております。 どうすればかなうでしょうか? 具体的には次のような内容です。 ■C言語側 ---- char key1 = "deperture"; ---- ■C++側で「key1 = key2」としたいです。 ---- std::string key2 = key1; ---- C言語側で記述されている「key1」の値(deperture)を、 C++ソース内の「key2」に渡したいと思っています。 こうゆう場合、どんな方法をとれば適切でしょうか。 C言語側でのchar型の文字列の値を、 C++側の「std::string」型として C++のソースへ渡す方法が分からないです。 アドバイスいただけるとありがたいです。 簡単な例を頂けると更に大変ありがたいです。 以上どうぞ宜しくお願い致します。

  • レジストリの値

    どなたかWindows2000を使っておられる方、下のレジストリの値を教えていただけないでしょうか。 HKEY_CLASSES_ROOT→folder→open→command の値です。

  • Windowsのレジストリをみて、コントロールパネルの値を知りたい

    お世話になります。 厳密にいうと、C,C++の質問ではないかも知れませんが プログラムから、Windowsの地域と言語のオプションの 言語タブの「東アジア言語のファイルをインストールする」が チェックされているか否かを取得したいと思っています。 C,C++でやるんなら、レジストリの値を見ればいいのだろうと 思うのですが、どのレジストリをみればいいか、ご存知ないでしょうか? (それとも、レジストリをみないで、コンパネの値を問い合わせる APIがあったり???)

  • レジストリエディタで・・・

    レジストリエディタで「お気に入り」フォルダを別ドライブに移動したら、 フォルダの種類と属性が変わってしまったのですが、大丈夫なのでしょうか? フォルダの種類・・・シェルお気に入りフォルダ→ファイルフォルダ 属性・・・システムの部分のチェックボックスがチェック→されていない 回答宜しくお願いします。

  • C言語で文字列置き換え

    をしたのですが 例 取得した値でC:\\programfile\\LOGがあり 文字列処理を行ってLOGをRESULTにかえ C:\\programfile\\RESULT としたいのですがうまくいきません。 strtokを使って、その後にstrcatで連結させようとしたのですが・・・。教えてください><

  • レジストリの削除について

    たびたび質問すいません。 初めてレジストリを削除するのですがわからないので教えてください。 http://support.microsoft.com/kb/2748410/jaの 「方法 2: レジストリを手動で更新する」 4. レジストリから次の 2.0 キーを参照して、削除します。 HKEY_CLASSES_ROOT\TypeLib\{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}\2.0 をしようとしてるのですが 【1】「2.0」のフォルダで右クリックして削除するのか、 【2】「HELPDIR」で右クリックして削除するのか、 どちらでしょうか? [{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}] の値が入ってるのは、【2】のほうだけど、リンク先には、「HELPDIR」でとは書いてないので、 どうすればいいか迷っています。 ご教授よろしくお願いします。

  • レジストリの検索

    こんにちは。 お世話になります。 早速ですが、 WSHを使って、レジストリキーを検索し、そのキーの入ってるフォルダごと削除するような vbsを作りたいのですが、レジストリキーを検索する方法がわかりません。 検索したいレジストリキーの場所は、コンピュータによって変わってしまうので あるキーワードを元にレジストリ全体を検索し、そのキーのパスを取得したいと考えています。 レジストリの検索方法をご存知の方、やり方を教えていただけないでしょうか。 よろしくお願いいたします。

  • エクセルファイルのセル値に特定文字列を追加して別ファイルに

    VB2008でのプログラム方法についての相談です。以下の手順を実現したいです。 (1)エクセルファイルのあるセル中にあるデータを取得 例)A1セルの値"AA"、A2セルの値"BB"、A3セルの値"CC"..... (2)決まりきった特定文字列と(1)の値を結合 例)くっつけたい文字列 " "+AA ⇒ くっつけたい文字列"AA" くっつけたい文字列 " "+BB ⇒ くっつけたい文字列"BB" くっつけたい文字列 " "+CC ⇒ くっつけたい文字列"CC" (3)テキストファイルを生成 ○○○.txt 例) くっつけたい文字列"AA" くっつけたい文字列"BB" くっつけたい文字列"CC"

  • 最も多い文字列を検索するには

    皆様いつもお世話になっております。 最も多い文字列を検索するにはどのようにすればよいでしょうか。 具体的には (1)A列に6文字の文字列が並んでいます。 (2)先頭4文字の文字列で最も多い種類の文字列の値を取得する (3)最も多い文字列以外の文字列を含む行を削除する というプログラムを組みたいと思います。 よろしくお願いします。