你好,我有一个应用程序会创建/写入日志文件(之后会写入错误日志),但是现在遇到了权限问题,因为如果用户没有在我的应用程序所在文件夹中创建文件的权限,它就会抛出异常。
现在我的问题是,如何让这个应用程序独立(不受用户影响)地获得创建和写入文件的权限。
我看过这篇文章,但它没有帮助,因为客户端无法授予权限(他们没有授权),但我需要这个权限来运行我的应用程序。
非常感谢您的帮助。
你好,我有一个应用程序会创建/写入日志文件(之后会写入错误日志),但是现在遇到了权限问题,因为如果用户没有在我的应用程序所在文件夹中创建文件的权限,它就会抛出异常。
现在我的问题是,如何让这个应用程序独立(不受用户影响)地获得创建和写入文件的权限。
我看过这篇文章,但它没有帮助,因为客户端无法授予权限(他们没有授权),但我需要这个权限来运行我的应用程序。
非常感谢您的帮助。
通常认为(我甚至会说是最佳实践)将程序二进制文件与其数据分离。
例如,所有的Windows应用程序都位于Program files
下,但是它们会将数据写入到用户的%APPDATA%
和共享数据的%ProgramData%
中。除非您的程序有非常特殊的要求,否则应该遵循这些指南。
根据数据类型,特别是如果您希望用户快速找到数据,则还可以在用户文档文件夹下创建子文件夹。
使用C#,您将能够轻松地使用Environment.GetFolderPath方法查找此类特殊文件夹。例如:
public string GetDataFolder()
{
var appDataPath = Environment.GetFolderPath(
Environment.SpecialFolder.ApplicationData, // Search under %APPDATA%
Environment.SpecialFolderOption.Create // Create the folder if it does not exists
);
var dataFolder = Path.Combine(
appDataPath,
"MyApplication"
);
return dataFolder;
}
%ProgramData%
进行定位,可以使用Environment.SpecialFolder.CommonApplicationData
来找到它:
最终,此文件夹将被解析为(默认设置)这个目录作为所有用户使用的应用程序特定数据的公共存储库。
C:\Programdata\MyApplication
。