• 締切済み

スタートメニュー→プログラム内のフォルダをRemoveDirectoryできない

スタートメニュー→プログラム内のフォルダをRemoveDirectoryで消そうとしています。 WindowsXPで実行すると問題なく削除できるのですが、WindowsVistaで実行すると削除できません。 プログラムフォルダのパスはSHGetSpecialFolderLocation関数でCSIDL_PROGRAMSを指定してとってきています。 削除対象のフォルダは空です。 理由のわかる方、どうやったらいいかご教授願います。

みんなの回答

回答No.4

・SHGetSpecialFolderLocationで取得したフォルダに、エクスプローラでアクセスして削除できるか試す。(Vistaの場合、非常に深い階層になるはずです) ・フォルダが本当に空か確かめる。(Vistaの場合はDesktop.iniが隠しファイルとして存在する可能性があります) あとは、No.3にあるよにう各関数の戻り値から原因を推測するしかないでしょう。

nanamisnow
質問者

補足

質問での説明が足りてなかったです。 自作インストーラーでショートカットをフォルダ内に一度作成し、自作アンインストーラーでショートカットを削除とRemoveDirectoryでフォルダを削除。そのRemoveDirectoryで削除できない(スタートメニュー→すべてのプログラムにフォルダが残る)ということでした。 色々試して自己解決しました。 SHGetSpecialFolderLocationで取得するプログラムフォルダのパスをプログラムパスAとして、「%ProgramData%\\Microsoft\\Windows\\Start Menu\\Programs」をプログラムパスBとして以下話をします。 結論から言うと、プログラムパスAにフォルダを作成後、その中にショートカットをインストーラーで作成しようとするとプログラムパスBにフォルダ+ショートカットが作成されてしまうため、プログラムパスAでRemoveDirectoryしてもプログラムパスBにフォルダが残ってしまったようです。そして、プログラムパスBこそがインストールしたショートカットを納めておく場所みたいです。 プログラムパスAにインストーラー(EXE名前がinstallを含んでいる等)でフォルダ作成をし、その中にショートカットを作成しようとすると、プログラムパスBにショートカット入りのフォルダができます。 アンインストーラーでプログラムパスAでショートカットを削除しようとすると、プログラムパスBのフォルダのショートカットが削除されます。 同じようにプログラムパスAでフォルダを削除しようとすると、プログラムパスBのフォルダは削除されずに、プログラムパスAのフォルダが削除されます。 プログラムパスBのフォルダにあるものがスタートメニューに反映されるみたいなので、フォルダがスタートメニューに残ってしまっていたということです。 長々と書きましたがわかりにくいかもしれませんね。 VistaではProgramFilesのように、書き込もうとすると保存先が変わるフォルダがあるようです。 Vistaはあまり触っていなかったのでそんなこともわかっていなかったので恥ずかしいのですが、回答をいただきありがとうございました。

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

RemoveDirectory()の戻り値と、GeLastError()はなんと言っていますか? # Vista、インストールしていないから試せない…

nanamisnow
質問者

補足

戻り値は成功が返ってきています。

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

UACにより削除が制限されているのでは? UACを無効にするか、右クリックメニューから[管理者として実行]を試してみましょう。(試すだけで、UAC無効を常用しろと言ってるわけではありません。念のため)

nanamisnow
質問者

補足

UACを無効にして実行してみましたが、結果は同じでした。

全文を見る
すると、全ての回答が全文表示されます。
  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

管理者権限のあるユーザーで実行したらどうなりますか? # 各ユーザーのスタートメニュー内……ならば管理者権限は関係なさそうですな。 あとは、カレントディレクトリはどこになっていますか? 削除しようとしているディレクトリの中になっている場合は、削除できなかったハズですが…。

nanamisnow
質問者

補足

ユーザーは管理者権限のあるユーザーです。 ファイル名がuninstallerなので権限はあります。 カレントディレクトリは直前でわざわざTEMPフォルダに変更してます。 XPで削除できてるのにVistaで削除できないのが不思議です。

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

関連するQ&A

  • Vistaのスタートメニュー>プログラム

    WindowsVistaのスタートメニューを「クラシック」にして使っています。 スタート>プログラム、の順に開くと、 プリインストール?されていた「Windowsアドレス帳」「Windowsムービーメーカー」等、 今後も使うことがないであろうプログラムが表示されています。 これらをこの「プログラム」の欄から消したいのですが、 どこかでこの部分の設定ができるでしょうか? 「スタートメニューのカスタマイズ」や、 WinXPで言う、C:\Documents and Settings\アカウント名\スタート メニュー\プログラム、 にあたるフォルダ(おそらく)を開いてみたのですが、 「管理ツール」や「アクセサリ」等、一部のフォルダしか存在しません。 よろしくお願いします。

  • スタートメニューからプログラムを削除

    Windows XP Home Edition Service Pack 3を使用しております。 ユーザーが1つあり、もう1つユーザーを作りました。 もう1つユーザーを作った理由は、妻に使わせてあげるためなのですが、その妻のユーザーのスタートメニューのすべてのプログラムのなかには、恥ずかしいのですが、私のギャ○ゲーが入っています。 これはまずいと思いスタートメニューから削除しようとしましたが、「このフォルダを変更すると、このコンピュータにログオンするすべてのユーザーが影響を受けます。続行しますか?」と表示されます。ためしに削除してみたところ、私のユーザーでもそのゲームがスタートメニューから消えていました。 私のスタートメニューからそのゲームを消さず、妻のスタートメニューからのみからそのゲームを消す方法はありませんか。 直接実行すればいいのかもしれませんが、他にもゲーム以外に妻のユーザーのスタートメニューからは消したいものがありますので、直接実行というのはなしでお願いします。(すみません。) 検索しても、見つからなかったため、質問させていただきました。 よろしくお願いします。

  • スタートメニューの「すべてのプログラム」のフォルダ

    スタートメニューの「すべてのプログラム」のフォルダが、あるユーザー名のものになっているため、「All Users」フォルダにあるプログラムが表示され困っています。 C:\Documents and Settings\All Users\スタート メニュー\プログラム を表示するようにするにはどうすればいいでしょうか。

  • XPのスタートメニューのプログラムのフォルダが右クリックで開かなくなりました

    WindowsXPでスタートメニューから「すべてのプログラム」で出てくるメニューの例えば「アクセサリ」というフォルダをそのメニュー上で右クリックすると、「開く」や「エクスプローラ」というメニューが出てきます。 以前は、その開くやエクスプローラをクリックするとフォルダが開かれていたのですが、突然、開かなくなってしまいました。 どこから、この設定(?)を元に戻せるでしょうか? よろしくお願いいたします。

  • スタートメニューに・・・。

    最近スタートメニューを開くと、すべてのプログラムのところに「表示できない項目がいくつかあります。 スタートメニューに表示できる容量が足りません。表示するには、項目を削除してください」みたいな表示が出てしまいます。(コメント合っているか分かりませんが、だいたいこんな感じです) なんかのファイルを削除すればいいのかは、分かりますが、どれを削除していいのか分かりません。 しかし、むやみに削除しようとしてみると、「このフォルダを変更しようとすると、このコンピューターを使うすべてのユーザーが影響します。実行しますか?」と出るので、ビビッて削除できません。 どうしてこうなるのか分かりません。 どういう系のファイルを削除したらよいのでしょうか?

  • Start Menu\Programs~の場所

    VISTA 32bit です。 DドライブからDVDにエクスプローラでファイルを移動させていた時に、 後でDVDを開いたら Start Menu\Programs\Accessories\Media Center\Media Center Programs というフォルダが Eディスクドライブの直下にできていました。 しかし各フォルダとも、その他のフォルダやファイルは一切入っていません。 私はすぐに、「Ctrl+X、Ctrl+V を繰り返してファイルコピーをしていたから、左下のスタートメニューか何かが開いている時に、誤って Cドライブから何かを移動してしまったんだ」 と思い当たりました。 また、DVDフォーマットした時に勝手に作られるフォルダなのだろうか?とも疑いまいた。(ちなみに移していたファイルは、Media Center関連の録画ファイルです。)しかし、別のディスクをフォーマットしても、同じようなフォルダは作られませんでした。 気持ち悪いです。 できたら元の場所に戻したいです。この空の、 Media Center Programsフォルダを含む Start Menuフォルダは、 いったいどこにあったと予想されますでしょうか。詳しい方お願いします。 また、現在、DVD内に移されてしまいましたが、空だということは、 Start Menuフォルダは あってもなくても良いフォルダだったことだった、 特に復元しなくても問題ない、 と言えそうでしょうか? よろしくお願いします。

  • [スタート]メニューの[プログラム]を非表示にする

    WindowsXP Pro SP2を使用しております。 クラシック[スタート]メニューを使用していて、[終了オプション]のみを残して、その他のメニューは全て非表示にすることを進めています。 マイクロソフトのサポート技術情報に[スタートメニュー]のカスタマイズ方法が掲載されていて、レジストリを編集することで、[ファイル名を指定して実行]、[ヘルプとサポート]等は非表示にすることが出来ました。(http://support.microsoft.com/kb/292504/ja) 但し、[プログラム]だけが残ってしまい、非表示にすることが出来ない状況に陥ってます。 [スタート]メニューの[プログラム]を非表示にする方法をご存知でしたら、ご教示頂けます様お願い致します。

  • スタートメニューの編集ができません

    いつもお世話になります。 スタートボタンを押して、『すべてのプログラム』が表示される一覧を エクスプローラー上で整理したところ、 『スタートアップ』が重複して起動したり、それを制御できなかったり・・・ とても困っています。 ■重複して起動してしまう『スタートアップ』を元に戻したい。 スタートメニューのショートカット一覧を見ても 『スタートアップ』は1箇所しかないのに重複して起動してしまい エラーが出てしまいます。どうすれば直るでしょうか?? 『スタートアップ』の場所はここにあるだけです。 C:\Documents and Settings\All Users\スタート メニュー\プログラム\スタートアップ ■ゴチャゴチャになったスタートメニューを整理したい スタートメニューの中にヘンなフォルダがあり 削除することができません。 ↓消したいメニュー C:\Documents and Settings\All Users\スタート メニュー\プログラム\スタート メニュー C:\Documents and Settings\All Users\スタート メニュー\プログラム\プログラム スタートメニューの中にスタートメニューがあったり、 プログラムの中にプログラムがあったりよくわかりません。 これらを削除しようとすると 『このフォルダを変更すると、このコンピュータにログオンするすべてのユーザーが影響を受けます。続行しますか?』→ 『はい』 ↓ 『プログラムはWindowsのシステムフォルダで、Windowsを正しく実行するのに必要です。削除できません。』 となってしまい、削除できません・・・。 『msconfig』の『スタートアップ』の項目を見ると、重複してる項目があったので 重なった箇所だけチェックをはずし再起動すると、、、今度は全くスタートアップが起動しません。 どなたか助けてください・・・。

  • スタートメニューのプログラムから消えてしまいました

    スタートメニューのプログラムの一覧から「アクセサリ」が消えてしまいました。 どうやって復活させたらよいか教えてください。 今、Cドライブを『アクセサリ』で検索すると 以下フォルダにありました。 C:\ProgramData\Microsoft\Windows\Start Menu\Programs

  • スタートメニューのプログラムを整理したい

    クラシックスタートメニューを使っています。 スタート→設定→タスクバーとスタートメニュー→ スタートメニュータブ→カスタマイズ と辿っていくと、「並べ替え」というボタンが出てきます。 ところが、押しても何の反応もありません。 仕方がないので、「並べ替え」の上にある「詳細設定」を押しました。 スタートメニューがエクスプローラで開いて、「プログラム」フォルダが見えました。 が、今度は、プログラムやフォルダの数がぜんぜん足りないのです。 スタートメニューから見るプログラムの半分も表示されません。 これは一体どういうことなのでしょうか。 わかる方いらっしゃいましたらよろしくお願いします。