【发布时间】:2012-11-24 02:10:00
【问题描述】:
我正在开发一个 Windows 8 商店应用程序,该应用程序使用 C# 作为 GUI 和 C++(作为同一解决方案中的另一个项目,设置为制作 DLL)进行图像处理,并试图打开 .png 图像从 C# 指定的路径中的 C++。当图像位于 Apps 资产文件夹(即.\\Assets\\image.png)中时,这工作正常,但是当我尝试访问图片库中的图像时,我在 C++ 代码中得到E_ACCESSDENIED。我已经在 c# 项目清单中指定了文档和图片库功能,但 C++ 仍然被拒绝访问。任何人都知道如何授予 C++ 代码对某些文件夹的访问权限?
例如调用 wincodec.h 中定义的函数,如果 'filename' 类似于 "C:\Users\Name\Pictures\image0.png" hr 将得到结果E_ACCESSDENIED
if (SUCCEEDED(hr))
{
hr = pFactory->CreateDecoderFromFilename(
filename,
NULL,
GENERIC_READ,
WICDecodeMetadataCacheOnDemand,
&pDecoder);
}
【问题讨论】:
-
您能否发布用于获取路径的代码、路径是什么以及您尝试打开文件的方式?
-
您应该使用异步模式打开文件,MSDN 中有许多 Windows 8 示例告诉您如何打开图像。请搜索关键字 CreateDecoderFromStream。