我们开发了WPF应用程序,允许用户选择文件夹路径。 WPF应用程序将文件/数据写入此选定路径。当我们选择“C:\ ProgramData”作为路径时,它会创建文件并写入数据。但是当路径不是“C:\ ProgramData”时,会生成文件,但数据不会写入文件,而且似乎是权限问题。任何人都可以帮助我们找出,我们如何为“C:\ ProgramData”赋予所选文件夹相同的权限,以便它允许将数据写入文件。在结论中,“ProgramData”具有哪些额外权限,而不是其他文件夹?
注意:它只适用于ProgramData文件夹。
答案 0 :(得分:1)
每当您的应用程序以标准用户权限启动时,它只能写入标准用户可以写入的文件夹。例如。是:
无法写入如下文件夹:
为此您需要禁用UAC或使用管理权限启动应用程序。
我建议每当用户从您的应用程序中选择一个文件夹时,检查您是否可以在接受该路径之前在该位置创建文件/文件夹。
答案 1 :(得分:0)
解决方案我能给出的是让用户在获取文件夹路径后选择路径只检查是否可以向其写入数据,请参阅此代码
bool HasAccessToWrite(string path)
{
try
{
using (FileStream fs = File.Create(Path.Combine(path, "Access.txt"), 1, FileOptions.DeleteOnClose))
{
}
return true;
}
catch
{
return false;
}
}
答案 2 :(得分:0)
@Ganesh是对的,但您可以使用以下选项之一:
我遇到了同样的问题,我强迫安装程序在管理员权限下运行,并要求用户在安装过程中创建目标文件夹。使用自定义操作为目标文件夹上的每个用户组设置完整权限。由于安全性对我们来说不是问题,因此在使用此选项之前允许每个人考虑您的环境是可以的。