![](/img/trans.png)
[英]Access to the path 'C:\ProgramData\Application Data' is denied
[英]How to get the application specific data folder (ProgramData)?
我需要讀取和寫入包含所有用戶共享的特定於應用程序的數據的文件。
我嘗試使用Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
,但它只返回C:\\ ProgramData 。
我的問題是:
它是否存在像Path.GetDirectoryName(Application.UserAppDataPath)
這樣的系統,它會根據我的應用程序名稱和版本給出我要寫的確切文件夾?
或者ProgramData不是正確的選擇。
謝謝。
它是否存在像Path.GetDirectoryName(Application.UserAppDataPath)這樣的系統,它會根據我的應用程序名稱和版本給出我要寫的確切文件夾?
不,它不存在,至少在Windows 7上運行時(不了解Windows 8 / WinRT / Windows應用商店應用)。 可行的解決方案是將Environment.GetFolderPath(...)
輸出與應用程序的自定義路徑連接起來。 通常,為了減少沖突的可能性,可能類似於YourOrganization\\YourApplication
或YourFullName\\YourApplication
,也可能是附加版本。
或者ProgramData不是正確的選擇。
這是在磁盤上存儲應用程序范圍信息的正確位置。 與您的應用程序相關的信息以及登錄計算機的每個Windows用戶的信息應該改為<User folder>\\AppData\\Roaming\\...
或<User folder>\\AppData\\Local\\...
注意 :正如有人已在評論中提到的,通常需要管理員權限才能在C:\\ ProgramData ...中工作 ,因此您需要准備一個安裝項目,在安裝階段,將在ProgramData中創建文件夾並給出正確的權限。
我認為CommonApplicationData正是您正在尋找的,因為它是所有未綁定到用戶的應用程序的全局文件夾。
var commonpath = GetFolderPath(SpecialFolder.CommonApplicationData);
var path = Path.Combine(commonpath, "YourAppName\\YourApp.exe");
try {
Process.Start(path);
// or put data there or whatever
}
catch (Exception ex)
{
MessageBox.Show(path);
}
對於用戶綁定數據,還有SpecialFolder.LocalApplicationData。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.