10

我需要读取和写入包含应用程序特定数据的文件,并在所有用户之间共享。

我尝试使用Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData),但它只返回C:\ProgramData

我的问题是:

它是否存在类似 的系统Path.GetDirectoryName(Application.UserAppDataPath),它会根据我的应用程序名称和版本为我提供要写入的确切文件夹?

或者ProgramData不适合这样做。

谢谢。

4

2 回答 2

8

我认为 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。

于 2018-07-09T06:54:38.433 回答
5

它是否存在像 Path.GetDirectoryName(Application.UserAppDataPath) 这样的系统,它将根据我的应用程序名称和版本为我提供要写入的确切文件夹?

不,它不存在,至少在 Windows 7 上运行时(不了解 Windows 8/WinRT/Windows Store 应用程序)。可行的解决方案是将Environment.GetFolderPath(...)输出与您的应用程序的自定义路径连接起来。通常,为了减少冲突的机会,这可能是类似的YourOrganization\YourApplication,或者YourFullName\YourApplication,也可能是附加版本。

或者 ProgramData 不适合这样做。

这是在磁盘上存储应用程序范围信息的正确位置。与您的应用程序相关的信息以及登录计算机的每个 Windows 用户的不同信息应改为<User folder>\AppData\Roaming\..., 或<User folder>\AppData\Local\....

注意:正如评论中已经提到的那样,通常需要管理员权限才能在C:\ProgramData...中工作,因此您需要准备一个安装项目,在安装阶段,将在ProgramData中创建文件夹并给出正确的权限。

于 2015-07-22T18:38:51.987 回答