我正在开发一个C++ Windows应用程序,我经常尝试将屏幕截图保存到磁盘上。
我使用的是DirectX工具包 (DirectXTK)和返回HRESULT的函数SaveDDSTextureToFile。
问题是返回的HRESULT总是:
E_ACCESSDENIED通用访问被拒绝错误。
我认为这是一些权限/功能的问题(它是一个windows商店应用程序),但我找不到我需要什么权限才能将文件保存到磁盘。
DirectX ToolKit说它适用于Windows应用程序和桌面应用程序,但是我也找不到关于它们的codeplex的任何信息。
有人知道我需要什么才能让这件事奏效吗?
耽误您时间,实在对不起。
发布于 2013-09-11 13:08:10
我设法想办法做到这一点。基本上,正如MooseBoys所说,你不能保存到任何地方,因为应用程序是沙箱。
不过,您可以将其保存到AppData中的应用程序包的AppData文件夹中,这是我所需要的,因为我正在使用此功能进行调试。
所以我的电话是:
DirectX::SaveWICTextureToFile(deviceContext, texture2D, GUID_ContainerFormatPng, L"C:\\Users\\USERNAME\\AppData\\Local\\Packages\\PACKAGENAME\\TempState\\test.png");而且这个效果很好。
发布于 2013-09-07 00:19:07
Windows Store应用程序是沙箱化的,比桌面应用程序具有更少的权限,特别是在文件访问方面。默认情况下,应用程序只能访问对本地存储目录的写入,而这并不容易从shell中访问。如果要保存到图片或文档库,则需要在包清单中指定此访问权限。此外,您还需要使用WinRT文件API来编写DDS文件。为此,请使用SaveDDSTextureToMemory,然后将生成的原始DDS数据写入StorageFile。有关将数据写入文件所涉及的文件访问示例 API的更多信息,请查看WinRT。
https://stackoverflow.com/questions/18660754
复制相似问题