我需要读取和写入包含应用程序特定数据的文件,这些数据在所有用户之间共享。
我尝试使用Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData),但它只返回C:\ProgramData。
我的问题是:
它是否存在像Path.GetDirectoryName(Application.UserAppDataPath)这样的系统,它将根据我的应用程序名称和版本给我确切的文件夹来编写?
或者ProgramData不是这样做的合适地点。
谢谢。
发布于 2018-07-09 06:54:38
我认为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。
发布于 2015-07-22 18:38:51
它是否存在像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\...。
Beware:正如注释中已经提到的,通常需要管理员权限才能在C:\ ProgramData .中工作,因此您需要准备一个安装项目,在安装阶段将在ProgramData中创建文件夹并授予正确的权限。
https://stackoverflow.com/questions/27918865
复制相似问题