2010-04-10 61 views
6

直到Windows Vista,我將我的應用程序數據保存到程序所在的目錄中。最常見的地方是「C:\ Program Files \ MyApplication」。正如我們所知,在Vista及更高版本中,普通用戶無權在「Program Files」文件夾下編寫代碼。 所以我的第一個想法是將應用程序數據保存在「所有用戶\應用程序數據」文件夾下。但似乎這個文件夾也有寫作限制!用於存儲具有所有用戶的讀寫權限的應用程序數據的最佳目錄?

所以總結起來,我的要求是:

  • 的文件夾應該在Windows XP及以上存在。
  • 系統的所有用戶應具有對此文件夾及其子文件夾和文件的讀\寫\創建權。
  • 我想只有一個所有用戶的文件\文件的副本。

回答

2

通常使用環境變量是很好的,所以你可以保留更通用的東西。

Vista通過NTFS連接點改變了一些東西。見http://www.svrops.com/svrops/articles/jpoints.htm

總之,使用%APPDATA%應該會自動把文件在正確的位置上XP/Vista/7的

+1

%appdata%不是共享可寫的公共區域,是嗎? – RBarryYoung 2010-04-10 19:57:47

+0

我指的是Windows系統的每個用戶。 – Wodzu 2010-04-10 21:02:06

1

沒有這樣的位置。即使在Windows XP上(也可能是2000),沒有這樣的位置存在;我們只是認爲這是因爲我們都以管理權限運行。直到Vista迫使我們以有限的用戶運行,我們才意識到我們的錯誤假設。你將不得不明確地設置你的目錄的權限。

+0

感謝盧克,我想我將在管理員帳戶下的安裝過程中設置權限。 – Wodzu 2010-04-11 10:18:26

+0

如果沒有這樣的位置,那麼.NET的System.Windows.Forms.Application.CommonAppDataPath(通常解析爲C:\ Documents and Settings \ All Users \ Application Data \ CompanyName \ ProductName \ VersionNum)是什麼? – 2010-04-11 20:03:55

+1

「所有用戶\應用程序數據」的默認權限不授予對有限用戶帳戶的完全訪問權限。如果管理用戶在那裏創建文件,則受限用戶將不具有對該文件的寫入權限。看起來最初的問題是試圖完成這個,所以修改DACL是必要的。 – Luke 2010-04-12 14:45:32

0

我會創建一個像所有用戶\應用程序Data \ YourAppName \ Shared這樣的子文件夾,這樣很明顯,該文件夾將包含所有用戶可寫入的文件,並在安裝程序中設置權限。

相關問題