Lit*_*ton 2 windows-8 windows-runtime visual-studio-2012
我编写了以下代码行来打开InstalledFolder目录下的文件:
Platform::String^ locationPath = Platform::String::Concat(Package::Current->InstalledLocation->Path, "\\Assets\\Logo.png");
CREATEFILE2_EXTENDED_PARAMETERS extendedParams = {0};
extendedParams.dwSize = sizeof(CREATEFILE2_EXTENDED_PARAMETERS);
extendedParams.dwFileAttributes = FILE_ATTRIBUTE_NORMAL;
extendedParams.dwFileFlags = FILE_FLAG_SEQUENTIAL_SCAN;
extendedParams.dwSecurityQosFlags = SECURITY_ANONYMOUS;
extendedParams.lpSecurityAttributes = nullptr;
extendedParams.hTemplateFile = nullptr;
Wrappers::FileHandle file(
CreateFile2(
locationPath->Data(),
GENERIC_READ,
0,
OPEN_EXISTING,
&extendedParams
)
);
DWORD e = GetLastError();
if (file.Get() == INVALID_HANDLE_VALUE)
{
throw ref new Platform::FailureException();
}
Run Code Online (Sandbox Code Playgroud)
CreateFile2返回拒绝访问错误.有人可以帮帮我吗?
正如JP Alioto所建议的那样,我已尝试使用WinRT文件I/O,如下所示
create_task(StorageFile::GetFileFromApplicationUriAsync(ref new Windows::Foundation::Uri("ms-appx:///Assets/Logo.png")))
.then([=](StorageFile^ f)
{
auto p = create_task(f->OpenAsync(FileAccessMode::Read));
p.wait();
});
Run Code Online (Sandbox Code Playgroud)
我仍然在p.wait()得到以下错误:
将无效参数传递给认为无效参数致命的函数
谢谢,
你是路过0的dwShareMode.CreateFile2说明这个价值的文件......
阻止其他进程在请求删除,读取或写入访问权限时打开文件或设备.仅当应用程序具有对文件的写访问权时,才会授予对文件或目录的独占访问权限.
您没有对包中文件的写入权限,这就是您获得访问被拒绝错误的原因.您需要将共享模式设置为FILE_SHARE_READ.
| 归档时间: |
|
| 查看次数: |
2229 次 |
| 最近记录: |