Получение ошибки 1814 Извлечение из ресурса - PullRequest
0 голосов
/ 28 сентября 2018

Пытаясь загрузить исполняемый файл из ресурса, я получаю сообщение об ошибке 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, что именно здесь может быть не так?

1 Ответ

0 голосов
/ 28 сентября 2018

Код ошибки 1814 : ERROR_RESOURCE_NAME_NOT_FOUND:

Указанное имя ресурса не найдено в файле изображения.

Ошибкаправильный.MAKEINTRESOURCE("IDR_EXE1") выдает неправильное имя, поэтому ресурс не найден.Вы неправильно используете макрос MAKEINTRESOURCE().Правильное использование - MAKEINTRESOURCE(IDR_EXE1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...