透過有條件地更改每個應用程式的環境變量,阻止程式在 Windows 使用者文件夾中建立垃圾郵件資料夾

透過有條件地更改每個應用程式的環境變量,阻止程式在 Windows 使用者文件夾中建立垃圾郵件資料夾

從網路上和超級使用者上的其他問題可以看出(例如阻止程式使用“我的文件”),Windows 用戶發現程式自行決定將自己的資料夾新增至使用者文件資料夾非常煩人。

使用者的文件資料夾,就像她的音樂或圖片資料夾一樣,用於存放她的個人文件,以僅對她有意義的方式進行管理、結構化和組織。如此多的程式將它們的檔案轉儲到這裡,很快就無法找到您自己的實際文件。

如果您搜尋網路和超級用戶,您會發現以下不同的建議,所有這些都不是問題的解決方案:我怎麼才能阻止這種情況發生?

  • 將「文件」資料夾移到其他位置,然後建立一個系統不知道的新資料夾實際上是您將用於文件的資料夾。 (不好:我系統知道我將文件儲存在哪裡,在其他所有情況下這都很有用。
  • 把你所有的實際的Documents 資料夾內的子資料夾內的文件。 (不好:為什麼我總是必須挖掘一層才能找到我的文檔,並且必須費力地經過主層的所有垃圾郵件資料夾?)
  • 定期手動清理資料夾。 (不好:這會破壞很多這樣的程式。)
  • 防止未經授權的資料夾建立的各種方法。 (不好:這會破壞很多這樣的程式。)
  • 在虛擬機器中運行程式。 (不好:99% 的場景都殺傷力過大。)
  • 不要使用這些程式。 (不好:我需要使用這些程式。)

最後你可能會得到我目前使用的解決方案,我認為這是最好的解決方案:

  • (可選:將有問題的資料夾移至其他位置,然後將該位置硬連結回文件。)
  • 隱藏文件中的違規資料夾。

哎呀!

(舉一個簡單的例子來說明為什麼這種解決方案仍然不夠充分:人們應該能夠將備份軟體直接指向用戶/文檔,或者實際上複製整個文件夾,並準確地知道得到了什麼。此外,很多人需要保持“顯示隱藏文件”開啟。

我慢慢想到了一個問題! ——這不只是咆哮!最後要指出的是,出現此問題的原因是因為程式設計師很懶,並將檔案轉儲到他們可以確定使用者可寫入的位置 - 即使有專用的 AppData 資料夾可用。一旦這種行為被編碼,只有開發人員可以改變它——而且大多數人不會。

所以。我能想像的只有一個可能的解決方案,就是這個。不知何故,確定使用者/文件位置的環境變數必須以不同的方式呈現給特定程式。我想到了一個問題——

如何才能實現這個目標?

答案1

不幸的是,沒有用於使用者文件位置的環境變數。

該路徑是由一個名為的 API 函數傳回的 SH取得已知資料夾路徑 傳回由其標識的已知資料夾 KNOWNFOLDERID 常數,對於每個使用者的文件資料夾來說是常數 FOLDERID_Documents

因此,要針對特定程式更改它,需要編寫一個程式來建立系統範圍的掛鉤SHGetKnownFolderPath並傳回所需的值。我不知道有這樣的產品。

除了更改相關產品的配置參數以設定預設保存位置之外,我看不到其他解決方案。如果他們沒有這樣的參數,唯一可能的操作就是向開發人員投訴。

答案2

可能沒有一種解決方案適用於所有程序。對於已安裝的軟體,如 harrymc 所指出的,該程式可能具有您可以修改的設定或可以編輯的登錄項目。如果您關心安裝過程中的資料夾創建,我猜想修改註冊表值個人的和(如果存在){f42ee2d3-909f-4907-8871-4c22fc0bf756},在下面找到HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders指向另一個資料夾,即「C:\Users\\BadApps」會「欺騙」安裝程式在該位置建立資料夾。安裝完成後,這些值將恢復到正常路徑。如果經常需要,可以編寫簡單的腳本來「切換」這些值。

相關內容