如果用户没有写入权限,如何编写文件

时间:2012-11-23 15:48:22

标签: wpf file c#-4.0 permissions

您好我有一个创建/编写日志文件的应用程序(稍后会编写一个ErrorLog) 但目前我坚持许可问题,因为如果用户没有权利在我的应用程序所在的文件夹中创建文件,则会抛出一个例外

现在我的问题是如何让(从用户)独立创建和编写此应用程序的权利

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

您的帮助将受到赞赏

1 个答案:

答案 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