首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在UWP中获得StorageFile或StorageFolder的FILE_WRITE_ATTRIBUTES访问的Win32句柄?

在UWP中,通过使用StorageFileStorageFolder类来获取FILE_WRITE_ATTRIBUTES访问的Win32句柄是不可能的。这是由于UWP应用程序的安全模型限制所导致的。UWP应用程序在运行时受到严格的沙箱保护,无法直接操作底层的Win32 API或获取文件的低级访问权限。

UWP应用程序采用了一种称为"沙箱"的安全模型,目的是确保应用程序的安全性和隔离性。沙箱模型禁止应用程序直接访问底层操作系统的API,包括获取文件的低级访问权限。相反,UWP应用程序必须通过使用提供的特定API来访问文件系统。

在UWP中,可以使用以下方式来访问和操作文件:

  1. 使用FileOpenPickerFolderPicker类允许用户选择文件或文件夹,并返回StorageFileStorageFolder对象,然后可以使用这些对象进行读取、写入等操作。
代码语言:txt
复制
FileOpenPicker filePicker = new FileOpenPicker();
filePicker.ViewMode = PickerViewMode.List;
filePicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
filePicker.FileTypeFilter.Add(".txt");

StorageFile file = await filePicker.PickSingleFileAsync();
if (file != null)
{
    // 进行文件操作
}
  1. 使用KnownFolders类可以访问特定的系统文件夹,如文档、图片、音乐等。
代码语言:txt
复制
StorageFolder documentsFolder = KnownFolders.DocumentsLibrary;
  1. 使用StorageFileStorageFolder类提供的API进行文件的读写、创建、删除等操作。
代码语言:txt
复制
StorageFolder folder = await StorageFolder.GetFolderFromPathAsync("C:\\FolderPath");
StorageFile file = await folder.CreateFileAsync("FileName.txt", CreationCollisionOption.ReplaceExisting);

await FileIO.WriteTextAsync(file, "Hello, World!");

string content = await FileIO.ReadTextAsync(file);

需要注意的是,UWP应用程序的文件访问权限受到应用程序的声明和用户的许可控制。在应用程序的清单文件中,需要声明所需的文件系统访问权限,并在应用程序运行时向用户请求相应的权限。

需要强调的是,UWP应用程序的设计理念是以安全性和隔离性为重点,因此对于一些特定的底层操作,如获取FILE_WRITE_ATTRIBUTES访问的Win32句柄,是不被允许的。这是为了确保应用程序的安全性和稳定性。如果有特定的需求需要进行这样的操作,可能需要重新评估应用程序的设计,并考虑使用其他技术和平台。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • win10 uwp 读写XML xml 语法XmlDocumentLinq 读写 XMLWPF 读XMLWPF 读写 xaml

    UWP 对 读写 XML做了一些修改,但和之前 WPF 的方法没有大的区别。 我们先来说下什么是 XML , XML 其实是 树结构,可以表达复杂的结构,所以在定制要求高的、或其他方面如json 做不到的结构,那么一般就使用XML,如果XML的数据结构都做不到,那么基本上也难找到其他的结构。 XML 的优点是读写很简单,也支持定制。缺点是复杂,当然这也是他的优点。在网络传输数据,如果使用XML,相对的传输大小会比 Json 多两倍。所以是不是要用到这么高级的结构,还是看需要。 wr 很喜欢用 XML,可以看到我们的项目,*.csproj 和页面 xaml 都是XML,当然Html也是,Xml 其实还可以用作本地数据库,所以 XML 还是很重要。 本文就提供简单的方法来读写 XML 。提供方法有两个,放在前面的方法是比较垃圾的方法,放在后面的才是我希望大家使用的。 如果遇到了 C# 或 UWP 读取 xml 返回的 Node 是空,那么请检查命名空间,关于命名空间内容,请继续看博客。

    01

    Createprocess控制台程序输出重定向

    在Windows编程中,并非每一个应用程序都需要一个图形用户界面(GUI),很多情况下,我们可以编写一个控制台应用程序,这样程序更小,加载更快,传输时间也短,同时也丝毫不牺牲程序应有的功能。这种程序特别适合那些在后台运行的程序,比如压缩、杀毒、上传下载等等。如果我们的确需要在GUI执行这些程序,以完成某些比如类似于磁盘格式化的功能,我们可以在GUI程序中创建一个新的进程,调用这些已有的控制台应用程序,帮助完成这些功能。然而令人失望的是,我们每次加载这些控制台应用程序时,图形程序总会在加载的过程中产生一个不受欢迎的控制台窗口,从而使我们图形用户界面显得不伦不类,当用户看到这个界面时,尤其看到我们加载的是别人编写的或者是操作系统提供的控制台应用程序,就会对我们产品的可信度表示怀疑,甚至大打折扣。因此我们必须竭力屏蔽这个窗口不让它显示出来,同时我们还需要把程序运行的结果定向到一个文本文件中,控制台程序的输入部分工作可以由交给GUI来完成。就像Visual C++编译一个程序一样,由MsDev.exe(GUI程序)负责加载编译器cl.exe(控制台程序)进行后台编译,然后把编译的结果定向到一个文件,并把编译结果输出到前台图形界面的一个窗口中,而用户在编译的过程中根本不会察觉这个过程,C++为应用程序加载提供了多个函数,比如 _spawnlp、ShellExecute、system、_exec等函数,这些函数除了system之外,都无法实现控制台程序的输出定向,而 system函数的缺点是会导致一个控制台窗口出现,如果计算机配置是一个全屏命令提示行模式,它就会把你的GUI程序直接切换到全屏控制台窗口,显然这是一个很不体面的解决方案。

    02
    领券