2 回答

TA貢獻1802條經驗 獲得超6個贊
這不是一個“問題”,而是一個功能。這稱為用戶帳戶控制(UAC),它是Windows Vista下加強系統安全性的方法之一。Windows 7確實保留了類似的安全模型。
完全沒有理由,您的應用程序首先不需要與系統文件夾混淆。如您所知,Windows為應用程序提供了許多臨時和永久存儲數據的位置。長期以來,Microsoft一直建議您利用這些文件夾:即使在以前的Windows版本下,它們也是存儲數據的首選位置。您忽略了此建議,但您的應用程序仍可以繼續工作的事實實際上是一個錯誤。Windows的更高版本最終關閉了該安全漏洞,從而破壞了您的應用程序,這一事實既不應是意外的,也不應該被人們所理解。
您可以在此頁面上找到有關將數據存儲在何處的更多信息。另請參閱此博客文章,該文章試圖將一系列技術文檔匯總到一個方便的表格中。與往常一樣,Raymond Chen提供了有關位置之間差異的簡單但有啟發性的概述:
我的文檔和應用程序數據之間最重要的區別在于,我的文檔是用戶存儲文件的位置,而應用程序數據是程序存儲文件的位置。
換句話說,如果您在CSIDL_MYDOCUMENTS(我的文檔)中放置了某些內容,則應該期望用戶對其進行重命名,移動,刪除,將其通過電子郵件發送給他們的朋友,這些都是用戶對其文件進行的所有操作。因此,轉到那里的文件應該是用戶會識別為“他們的東西”的東西。他們創建的文檔,下載的音樂等等。
另一方面,如果您將某些內容放入CSIDL_APPDATA(應用程序數據)中,則用戶不太可能將其弄亂。在這里,您可以放置程序的支持數據,這些數據實際上并不是您希望用戶弄亂的東西,但仍應與用戶相關聯。高分表,程序設置,自定義,拼寫檢查異常...
還有一個名為CSIDL_LOCAL_APPDATA(Local Settings \ Application Data)的目錄,其作用類似于CSIDL_APPDATA,但是如果用戶配置文件漫游,該目錄不會被復制。(“本地設置”分支不會作為漫游用戶配置文件的一部分進行復制。)可以將其視為每個用戶每個計算機的存儲位置。緩存和類似的非必要數據應保存在此處,特別是如果它們很大。非漫游每用戶數據的其他示例是您的%TEMP%目錄和Internet臨時目錄。

TA貢獻1810條經驗 獲得超4個贊
一個非常普遍的新手誤解是,程序設置可以保存在與可執行文件相同目錄下的文本文件(例如INI文件)中。從概念上講這是錯誤的。一方面,這將使按用戶設置成為不可能!但是由于Windows Vista的“虛擬存儲”兼容性功能,行為不端的程序仍可以在Vista上運行,此外,它們開始有效地采用每個用戶的設置。這對Microsoft來說是+1(對于抱怨它的人來說是-1?。?。
- 2 回答
- 0 關注
- 561 瀏覽
添加回答
舉報