2016-11-13 56 views
1

在窗口7,8和10上,我希望我的應用能夠將數據存儲在共享位置,以便在PC上運行應用的所有用戶都能訪問相同的數據。數據是可讀/可寫的。我應該使用什麼位置?適用於所有用戶的Windows數據存儲

+0

您的應用程序是否安裝在程序文件目錄中?如果是的話,你可以使用應用程序的文件夾來存儲數據。如果沒有,你可以使用'Program Files \ Common Files'文件夾。 –

+0

@Sádáššƒƒƒӽ這不是'Common Files'的用途。 「Common Files」目前尚未被使用,但它的目的是爲多個(可能是單獨安裝的)應用程序共享的不可變的通用組件,例如庫和實用程序 - 典型的例子是(舊的,2007年以前的)微軟公式編輯器,例如,可以通過單獨的Word和PowerPoint獨立安裝進行安裝。 – Dai

+0

@戴謝謝,不知道。我有點想'Common Files'是一個常見的*轉儲*:P。你的回答非常豐富。不知道這一切。 ;-) –

回答

2

Windows有關於程序共享數據的有趣規則。

  • 程序文件(「C:\Program Files‘和’C:\Program Files (x86)」)是爲不可變的(只讀)程序數據和可執行文件 - 文件因此這裏需要管理權限進行編輯。因此它對不應該被破壞的重要文件(例​​如你的主要可執行文件)很有用。這就是安裝程序以提升的權限運行的原因。有一個缺點,如果你的程序有一個自動更新機制,那麼也需要運行提升。
  • 程序數據C:\ProgramData在Windows Vista和更高版本,或C:\Documents and Settings\All Users\Application Data)是用於可變程序數據 - 你不需要管理權限此文件夾中創建文件,但一旦文件被創建只有用戶最初創建該文件的用戶可以隨後對其進行編輯(儘管每個人都可以閱讀它)。這是特殊的CREATOR OWNER權限。
  • 應用程序數據C:\Users\(you)\AppData\LocalC:\Users\(you)\AppData\Roaming)是用戶特定的,並且旨在用於用戶特定的設置,配置和數據。 Local版本應該用於特定於計算機的設置,如果用戶使用漫遊配置文件(例如數據緩存(例如瀏覽器緩存)),該設置不應該漫遊。

所以你的情況ProgramData看起來理想,但你必須要小心默認CREATOR OWNER規則 - 但有一個解決辦法:你的程序的安裝程序(這會以管理員身份運行)必須對改變ACL權限的能力其ProgramData子目錄允許其他用戶編輯文件。我建議授予Users組權限而不是Everyone以防止未經身份驗證的用戶進行遠程攻擊和修改。

相關問題