• ベストアンサー

フォルダの削除

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

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

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.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_SetFileAttributes.html,http://nienie.com/~masapico/api_GetFileAttributes.html
taka077
質問者

お礼

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

その他の回答 (2)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★補足。 ・任意にフォルダを作成して、プロパティでアイコンを変更すると隠し属性の付いた  『Desktop.ini』ファイルが自動作成されます。また、そのフォルダには自動的に  読み取り専用属性が付きます。 ・これを踏まえて回答者 No.1 さんのアドバイスを参考にして下さい。 その他: ・『DeleteFile()』でファイルの削除、ワイルドカード使用不可能。 ・『RemoveDirectory()』でフォルダの削除、空のフォルダしか削除できない。 ・『SHFileOperation()』でサブフォルダをまとめて削除、ごみ箱へ捨てる、直接削除も可能。 ・以上。おわり。

参考URL:
http://nienie.com/~masapico/api_RemoveDirectory.html
taka077
質問者

お礼

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

  • FAY
  • ベストアンサー率49% (95/193)
回答No.1

RemoveDirectory(DirPath)を呼ぶ前に ちゃんとフォルダを空にしてますか? Desktop.iniとかもちゃんと削除してますか?

taka077
質問者

お礼

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

関連するQ&A