アプリケーションごとに環境変数を条件付きで変更して、Windows ユーザーのドキュメント フォルダーにスパム フォルダーを作成するプログラムを停止します。

アプリケーションごとに環境変数を条件付きで変更して、Windows ユーザーのドキュメント フォルダーにスパム フォルダーを作成するプログラムを停止します。

インターネット上の他の質問やここSuperUser(例:プログラムがマイドキュメントを使用しないようにする)、Windows ユーザーは、プログラムが独自にフォルダーをユーザーのドキュメント フォルダーに追加することを決定することを非常に煩わしく感じています。

ユーザーのドキュメント フォルダは、ミュージック フォルダやピクチャ フォルダと同様に、ユーザー個人用のファイル用であり、ユーザーだけが理解できる方法で管理、構造化、整理されます。多くのプログラムがここにファイルを保存するため、自分の実際のドキュメントを見つけることがすぐに不可能になる可能性があります。

インターネットや SuperUser を徹底的に調べると、次のようなさまざまなアドバイスが見つかりますが、そのすべては質問に対する解決策ではありません。これを防ぐにはどうしたらいいでしょうか?

  • ドキュメントフォルダを別の場所に移動し、システムが実際にドキュメントに使用するフォルダを知らない新しいフォルダを作成します。(良くないのは、欲しいシステムが自分の文書をどこに保存しているかを知るため、これは他のすべての場合に便利です。
  • すべてを実際のドキュメント フォルダ内のサブフォルダ内のドキュメント。(良くない点: ドキュメントにたどり着くために、常に 1 レベル下まで掘り下げ、メイン レベルにあるすべてのスパム フォルダを通り抜けなければならないのはなぜでしょうか?)
  • 定期的に手動でフォルダーをクリーンアップします。(良くありません。多くのプログラムが壊れてしまいます。)
  • 不正なフォルダー作成を防ぐためのさまざまな方法。(良くない点: これによって多くのプログラムが壊れます。)
  • VM でプログラムを実行します。(良くない点: 99% のシナリオではやりすぎです。)
  • それらのプログラムを使用しないでください。(良くない点: それらのプログラムを使用する必要があります。)

最終的に、私が現在使用している解決策にたどり着くでしょう。これは、最悪な解決策の中では最善だと思っています。

  • (オプション: 問題のあるフォルダーを別の場所に移動し、その場所を Documents にハードリンクします。)
  • 隠れるドキュメント内の問題のあるフォルダー。

やったー!

(このスタイルのソリューションがまだ不十分である理由の簡単な例を挙げると、たとえばバックアップ ソフトウェアをユーザー/ドキュメントに直接指定するか、フォルダー全体をコピーして、何が得られるか正確に把握できる必要があります。また、多くの人は「隠しファイルの表示」をオンにしておく必要があります。)

だんだん疑問が湧いてきました。これはただの愚痴ではありません。最後に、この問題が発生する理由は、プログラマーが怠惰で、専用の AppData フォルダーがあるにもかかわらず、ユーザーが書き込み可能であることが確実な場所にファイルをダンプするためであることを指摘しておきます。この動作がコード化されると、開発者だけがそれを変更できますが、ほとんどの開発者は変更しません。

つまり、私が想像できる解決策は 1 つしかなく、それは次のとおりです。何らかの理由で、ユーザー/ドキュメントの場所を決定する環境変数は、特定のプログラムに対して異なる方法で提示される必要があります。私はある疑問にたどり着きました。

どうすればこれを実現できるでしょうか?

答え1

残念ながら、ユーザー ドキュメントの場所を指定する環境変数はありません。

このパスは、API関数によって返されます。 SHGetKnownFolderPath 既知のフォルダを返す KNOWNFOLDERID定数これは、ユーザーごとの Documents フォルダーの場合は定数 です FOLDERID_Documents

したがって、特定のプログラムに対してこれを変更するには、システム全体のフックを作成しSHGetKnownFolderPath、必要な値を返すプログラムを作成する必要があります。私はそのような製品を知りません。

問題の製品の構成パラメータを変更してデフォルトの保存場所を設定する以外に解決策はないと思います。そのようなパラメータがない場合、開発者に苦情を申し立てるしか方法はありません。

答え2

すべてのプログラムに当てはまる解決策はおそらくありません。harrymc さんが指摘したように、すでにインストールされているソフトウェアの場合、プログラムには変更できる設定や編集できるレジストリエントリがある可能性があります。インストール中にフォルダが作成されることに懸念がある場合は、個人的そして(もし存在するなら){f42ee2d3-909f-4907-8871-4c22fc0bf756}の下にある をHKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders別のフォルダ、つまり 'C:\Users\\BadApps` を指すように指定すると、インストーラがその場所にフォルダを作成するように「騙される」可能性があります。インストール後、値は通常のパスに復元されます。頻繁に必要になる場合は、これらの値を「切り替える」簡単なスクリプトを作成できます。

関連情報