嗨,我有一个创建/写入日志文件的应用程序(稍后它将写入错误日志) 但目前我坚持权限问题,因为如果用户无权在我的应用程序所在的文件夹中创建文件,则会抛出异常
现在我的问题是如何获得(来自用户)独立创建和编写此应用程序的权利
我读到this但这没有帮助,因为客户端无法授予该权限 (他们未经授权)但我的应用程序需要该权限
我们将不胜感激您的帮助
最佳答案
将程序二进制文件与其数据分开是一个常见的概念(我什至可以说是最佳实践)。
例如,所有Windows应用程序都位于程序文件
下,但将其数据写入用户的%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
找到的:
The directory that serves as a common repository for application-specific data that is used by all users.
最终,此文件夹将被解析为(使用默认设置)C:\Programdata\MyApplication
。
关于wpf - 如果用户没有写权限,如何写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13532227/