您好我有一个创建/编写日志文件的应用程序(稍后会编写一个ErrorLog) 但目前我坚持许可问题,因为如果用户没有权利在我的应用程序所在的文件夹中创建文件,则会抛出一个例外
现在我的问题是如何让(从用户)独立创建和编写此应用程序的权利
我读了this但它没有帮助,因为客户端将无法提供该权限 (他们没有被授权)但我需要我的应用程序
您的帮助将受到赞赏
答案 0 :(得分:4)
将程序二进制文件与其数据分开是一种常见的概念(我甚至会说,这是一种最佳实践)。
例如,所有Windows应用都位于Program files
下,但可以在用户的%APPDATA%
下为个人数据写入数据,也可以在%ProgramData%
下为共享数据写入数据。除非您的计划有非常具体的要求,否则应遵循此指南。
根据数据的类型,特别是如果您希望用户快速查找数据,您还可以在用户的文档文件夹下创建子文件夹。
使用C#,您可以使用Environment.GetFolderPath Method轻松找到此特殊文件夹。例如:
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;
}
如果你看一下Environment.SpecialFolderOption Enumeration,就会发现很容易找到大多数常见的地方。
如您所说,所有用户都会共享数据,您应该专门定位%ProgramData%
,这是使用Environment.SpecialFolder.CommonApplicationData
找到的:
用作所有用户使用的特定于应用程序的数据的公共存储库的目录。
最终,此文件夹将被解析为(使用默认设置)C:\Programdata\MyApplication
。