dポイントプレゼントキャンペーン実施中!

RemoveDirectory(DirPath)を使ってフォルダの削除を行ないたいのですが、
  ・C:\Documents and Settings\All Users\スタート メニュー\プログラム内のゲームフォルダ
  ・任意にフォルダを作成し、プロパティでアイコンを変更したフォルダ
が削除出来ません。
何かほかの方法はないのでしょうか?
SHFileOperationも使ってはみたのですが...

環境は以下の通りです。
WindowsXP
VisualC++V6 SP

以上、よろしくお願いします。

A 回答 (3件)

★追記。


・ゲームフォルダ(アイコン変更したフォルダ)などの削除方法
 (1)『Desktop.ini』ファイルのすべての属性を解除→隠し属性、システム属性
 (2)『Desktop.ini』ファイルやすべてのファイルを削除
 (3)『ゲーム』フォルダのすべての属性を解除→読み取り専用属性
 (4)『ゲーム』フォルダを削除→RemoveDirectory()関数など
・『SHFileOperation()』関数でサブフォルダを丸ごと削除する場合は、属性を無視して
 削除するため正常に出来たのです。もしも、RemoveDirectory() 関数で削除する場合は
 上記の4つのステップが必要になります。
・また、属性を解除するには SetFileAttributes()関数を利用して属性を解除できます。
 この関数はファイル、フォルダ共に属性を設定(解除)など行えます。
 SetFileAttributes( FileName, (FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM) );
 SetFileAttributes( DirName, (FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM) );

原因:
・フォルダがRemoveDirectory()関数で削除出来なかった原因は、単にフォルダ内に『Desktop.ini』
 ファイルが存在していただけではありません。フォルダ自身に『読み取り専用属性』が付いていたため
 削除できなかったのです。そこでフォルダ自身の属性も解除すれば、フォルダ内にファイルがなければ
 削除できます。→試してみるとよく分かりますよ。
・以上。おわり。

参考URL:http://nienie.com/~masapico/api_SetFileAttribute …
    • good
    • 0
この回答へのお礼

丁寧な回答、ありがとうございました。今回は、『SHFileOperation()』関数でサブフォルダを丸ごと削除する方法を使用する事としました。

お礼日時:2007/04/10 09:39

★補足。


・任意にフォルダを作成して、プロパティでアイコンを変更すると隠し属性の付いた
 『Desktop.ini』ファイルが自動作成されます。また、そのフォルダには自動的に
 読み取り専用属性が付きます。
・これを踏まえて回答者 No.1 さんのアドバイスを参考にして下さい。

その他:
・『DeleteFile()』でファイルの削除、ワイルドカード使用不可能。
・『RemoveDirectory()』でフォルダの削除、空のフォルダしか削除できない。
・『SHFileOperation()』でサブフォルダをまとめて削除、ごみ箱へ捨てる、直接削除も可能。
・以上。おわり。

参考URL:http://nienie.com/~masapico/api_RemoveDirectory. …
    • good
    • 0
この回答へのお礼

回答、ありがとうございます。
>・任意にフォルダを作成して、プロパティでアイコンを変更すると隠し属性の付いた
>『Desktop.ini』ファイルが自動作成されます。
は知りませんでした。
結局、サブフォルダをまとめて削除したかったので、『SHFileOperation()』を使用し、なんとか正常に削除出来ました。
ありがとうございました。

お礼日時:2007/04/09 13:36

RemoveDirectory(DirPath)を呼ぶ前に


ちゃんとフォルダを空にしてますか?
Desktop.iniとかもちゃんと削除してますか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。フォルダは空のはずですが...。もう少し、調べてみます。

お礼日時:2007/04/09 13:28

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