Пытаясь загрузить исполняемый файл из ресурса, я получаю сообщение об ошибке 1814, и я, очевидно, не понимаю, почему это так.Мой исходный код выглядит так:
Resource.h
IDR_EXE1 EXE "C:\\Users\\*****\\Documents\\Visual Studio 2015\\Projects\\HelloWorldMessageBoxExample\\Debug\\HelloWorldMessageBoxExample.exe"
Теперь мой исходный код для загрузки его из ресурса выглядит следующим образом:
#include "stdafx.h"
#include <Windows.h>
#include <stdio.h>
#include <iostream>
#include "resource.h"
int main()
{
HMODULE hModule = GetModuleHandle(NULL);
HRSRC hrsrc = FindResource(hModule, MAKEINTRESOURCE("IDR_EXE1"), L"EXE");
if (hrsrc == NULL) {
printf("Error finding Resource, Reason :%d", GetLastError());
getchar();
}
HGLOBAL hLoaded = LoadResource(NULL, hrsrc);
if (hLoaded == NULL) {
printf("Error Loading Resource, Reason: %d", GetLastError());
getchar();
}
LPVOID lpLock = LockResource(hLoaded);
if (lpLock == NULL) {
printf("Error Loading Locking Resource, Reason: %d", GetLastError());
getchar();
}
DWORD dwSize = SizeofResource(NULL, hrsrc);
if (dwSize == NULL) {
printf("Cannot Get Size of Resource, Reason: %d", GetLastError());
getchar();
}
HANDLE hFile = CreateFile(L"C:\\Users\\*******\\AppData\\Local\\vaxi\\hiMsg.exe", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == NULL) {
printf("Cannot Create File,Reason : %d", GetLastError());
getchar();
}
DWORD dwBytesWritten;
if (!WriteFile(hFile, lpLock, dwSize, &dwBytesWritten, NULL))
{
printf("Write File Failed,Reason : %d", GetLastError());
}
if (!CloseHandle(hFile))
{
printf("Close Handle Failure, Reason: %d", GetLastError());
}
else {
printf("Extracted Correctly!\n");
}
if (!ShellExecuteA(NULL, "open", (char*)hFile, 0, 0, SW_SHOWNORMAL)) {
printf("Shell Execute Failed, Reason: %d", GetLastError());
}
return 0;
}
И я все еще получаю ошибку 1814, что именно здесь может быть не так?