4

嗨,我有一个创建/写入日志文件的应用程序(稍后它将写入一个错误日志),但目前我坚持权限问题,因为如果用户无权在我的应用程序所在的文件夹中创建文件它抛出一个异常

现在我的问题是如何获得独立(来自用户)为这个应用程序创建和编写权限

我读了这个,但它没有帮助,因为客户将无法授予该权限(他们没有被授权),但我的应用程序需要该权限

您的帮助将不胜感激

4

1 回答 1

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

于 2012-11-26T08:50:58.400 回答