C# 对路径的访问被拒绝,但文件没有限制
我是C语言新手,不是一般编程方面的专家,但我似乎不知道是什么导致了这个问题。我让用户选择一个XML文件,然后我想读取它的内容。这是用C语言制作的通用windows 10应用程序 这就是我得到的错误: 中发生“System.UnauthorizedAccessException”类型的异常 mscorlib.ni.dll,但未在用户代码中处理 其他信息:无法访问路径“C:\temp\file.xml” 否认 然后C# 对路径的访问被拒绝,但文件没有限制,c#,windows-10,C#,Windows 10,我是C语言新手,不是一般编程方面的专家,但我似乎不知道是什么导致了这个问题。我让用户选择一个XML文件,然后我想读取它的内容。这是用C语言制作的通用windows 10应用程序 这就是我得到的错误: 中发生“System.UnauthorizedAccessException”类型的异常 mscorlib.ni.dll,但未在用户代码中处理 其他信息:无法访问路径“C:\temp\file.xml” 否认 然后 当我进入XmlReader.Create时,我就会得到错误。当我查找原因时,我发现唯
当我进入XmlReader.Create时,我就会得到错误。当我查找原因时,我发现唯一的原因是权限,但事实并非如此。任何帮助都将不胜感激。谢谢。您需要直接操作StorageFile,因为您的应用程序没有直接读取用户文件的权限。您可以使用WinRT XML API,也可以继续使用.NET API并使用基于流的创建函数,而不是采用文件名的函数。运行sysinternal的ProcMon应用程序,同时运行应用程序。在procmon捕获中找到该文件,并在CreateFile条目中找到创建配置。这将为您提供创建失败的线索。此外,选择“用户”列以显示执行操作的用户。虽然Peter Torr的回答是正确的,并且是Microsoft希望这些操作的方式,但至少可以使OP的部分代码工作。如果路径指向您有权限访问的目录之一,则重置方法将起作用。要获取这些数据,可以使用ApplicationData.Current。此对象包含LocalFolder、LocalCacheFolder或您的用例SharedFolder可能感兴趣的属性。您是如何确定权限不是这种情况的?谁有什么权限?试着将文件放在桌面文件夹中,看看是否可以从那里加载。可能是文件权限有问题,所以UAC正在阻止访问。如果不是权限问题,可能是文件具有其他文件的读取独占锁,或者文件具有只读属性集。这与传统权限无关,但这是由于应用商店应用程序被沙盒化。太棒了,这让我走上了我需要的道路。谢谢如果您打算提交Windows应用商店应用程序,则无法解决这些类型的问题。
public async static void pickFile()
{
FileOpenPicker openPicker = new FileOpenPicker();
openPicker.ViewMode = PickerViewMode.List;
openPicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
openPicker.FileTypeFilter.Add(".xml");
StorageFile file = await openPicker.PickSingleFileAsync();
if (file != null)
{
var t = Task.Run(() => { reset(file.Path); });
}
}
private static void reset(string path)
{
String LocationDatafilename = path;
XmlReaderSettings settings = new XmlReaderSettings();
XmlReader reader = XmlReader.Create(LocationDatafilename, settings);
XmlDocument LocationDataXml = new XmlDocument();
LocationDataXml.Load(Globals.reader);
}