Форум программистов, компьютерный форум CyberForum.ru

Извлечение .exe из ресурса - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.57
slavikg
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 71
31.12.2012, 00:45     Извлечение .exe из ресурса #1
Помогите извлеч екзешку на компютер пожалуста.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
31.12.2012, 02:40     Извлечение .exe из ресурса #2
можно подробнее, откуда её извлечь и зачем?
slavikg
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 71
31.12.2012, 13:31  [ТС]     Извлечение .exe из ресурса #3
У меня одна програма вшыта в другую через ресурсы. И мне нужно ее скопировать на диск с типа установки
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
31.12.2012, 14:40     Извлечение .exe из ресурса #4
Я бы с этим не мучался. Ведь хрен знает как она там зашита. Но есть один подход, которым меня часто спасал в такой ситуации. Просто, чтобы запустить этот exe его нужно сначало куда-то извлечь. Обычно это пихается в temp. Но пожно посмотреть путь к файлу через диспетчер задач и оттуда его тырнуть.
slavikg
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 71
31.12.2012, 20:21  [ТС]     Извлечение .exe из ресурса #5
Ето я вшыл одну прогу в другую и мне нужно ту прогу которая в етой проге закинуть на диск С
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
01.01.2013, 00:43     Извлечение .exe из ресурса #6
WinApi в помощь
slavikg
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 71
01.01.2013, 01:00  [ТС]     Извлечение .exe из ресурса #7
та я то вкурсе а какие функции то брать?
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
01.01.2013, 14:22     Извлечение .exe из ресурса #8
Вот проект смотри - запускаешь Project1 и на диск "С" извлекается программа с именем - "1" .
Вложения
Тип файла: rar Project1.rar (22.6 Кб, 27 просмотров)
slavikg
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 71
01.01.2013, 16:14  [ТС]     Извлечение .exe из ресурса #9
А в FindResource первым оператором что давать? Я пробовал NULL неработает?
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
01.01.2013, 16:23     Извлечение .exe из ресурса #10
Вот это надо передавать - HINSTANCE hInstance – дескриптор экземпляра приложения. Этот дескриптор содержит адрес начала кода программы в ее адресном пространстве. Дескриптор hInstance чаще всего требуется функциям, работающим с ресурсами программы.
slavikg
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 71
01.01.2013, 16:39  [ТС]     Извлечение .exe из ресурса #11
а что передать? У меня консольное приложениебез кнопок?
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
01.01.2013, 16:56     Извлечение .exe из ресурса #12
Цитата Сообщение от slavikg Посмотреть сообщение
а что передать? У меня консольное приложениебез кнопок?
Найди свой дескриптор приложение HWND по нему найди HINSTANCE и его передавай
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
01.01.2013, 17:11     Извлечение .exe из ресурса #13
Вот сделал для вас консольное приложение с извлечением программы на диск С
Вложения
Тип файла: rar Project1.rar (121.6 Кб, 15 просмотров)
slavikg
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 71
01.01.2013, 17:38  [ТС]     Извлечение .exe из ресурса #14
У меня еррор можете посмотреть что не так? Может неправильно .exe добавляю или не тот проект создал?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
// setup.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "setup.h"
#include<Windows.h>
#include <windowsx.h>
#include <cstdlib>
 
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
 
 
// Единственный объект приложения
 
CWinApp theApp;
 
using namespace std;
 
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
    ShowWindow(GetConsoleWindow(),SW_HIDE);
    int nRetCode = 0;
 
    HMODULE hModule = ::GetModuleHandle(NULL);
 
    if (hModule != NULL)
    {
        // инициализировать MFC, а также печать и сообщения об ошибках про сбое
        if (!AfxWinInit(hModule, NULL, ::GetCommandLine(), 0))
        {
            // TODO: измените код ошибки соответственно своим потребностям
            _tprintf(_T("Критическая ошибка: сбой при инициализации MFC\n"));
            nRetCode = 1;
        }
        else
        {
            // TODO: Вставьте сюда код для приложения.
        }
    }
    else
    {
        // TODO: Измените код ошибки соответственно своим потребностям
        _tprintf(_T("Критическая ошибка: неудачное завершение GetModuleHandle\n"));
        nRetCode = 1;
    }
 
 
    HKEY hkey1;//hkey2;
    //m_dwMaxFileSize = 16 * 1024;
    //LPCWSTR subkey;
    //unsigned char windir[100];
    //unsigned char szStr[10]={'"','C',':'};
    //szStr[0]='"'; szStr[1]='\0'; 
    //strcat((char*)windir,"C:\Windows\Starter.exe /minimized /regrun");
    //strcat((char*)windir,'\0');
    _TCHAR szTestString[] = _T("C:\\Windows\\Starter.exe /minimized /regrun");
    if(RegOpenKeyEx(HKEY_CURRENT_USER,TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"),0,KEY_ALL_ACCESS | KEY_WOW64_64KEY,&hkey1)== ERROR_SUCCESS)
        //RegSetValueEx(hkey1,L"Slavikg2",0,REG_SZ,(PBYTE)"C:\Windows\Starter.exe /minimized /regrun",200);//(PBYTE)
        RegSetValueEx(hkey1,L"Slavikg",0,REG_SZ,(BYTE*)szTestString,sizeof(szTestString)+1);
    RegCloseKey(hkey1);
    
    ///////////////////////////////////////////////////////////////////////
    //      Пробуєм вивести екзешку
    //HINSTANCE hInst=NULL;
    int Error = 0 ;
    
    HWND hwnd;
 
HINSTANCE hInst;
    
    hwnd = GetForegroundWindow();
    
   hInst = GetWindowInstance(hwnd);
    
 
HRSRC hResInfo = ::FindResource(hInst, MAKEINTRESOURCE(IDR_EXE3), RT_RCDATA);
                HGLOBAL hRes = ::LoadResource(hInst, hResInfo);
                LPVOID memRes = ::LockResource(hRes);
                DWORD sizeRes = ::SizeofResource(hInst, hResInfo);
 
                HANDLE hFile = ::CreateFile(TEXT("C:\\1.exe"), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
                DWORD dwWritten = 0;
               Error = ::WriteFile(hFile, memRes, sizeRes, &dwWritten, NULL);
                ::CloseHandle(hFile);
    
    if(Error!=0){
                 cout<<"Ok\n";
                 
                 }
                 
else{
     
     cout<<"Error\n";
     
     }
     
     system("PAUSE");
 
 
    //////////////////////////////////////////////////////////////////////
    return nRetCode;
}
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
01.01.2013, 19:01     Извлечение .exe из ресурса #15
что за ошибка , я же не телепат !
slavikg
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 71
01.01.2013, 19:26  [ТС]     Извлечение .exe из ресурса #16
Ошибки некакой. Выводит ошибка cout<<"Error\n";
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
01.01.2013, 19:30     Извлечение .exe из ресурса #17
Ты рессурсы создал правельно ? приложение которое ты посылаешь в ресурсы называется так же как и у меня в программе - 1.exe , да и ещё ты посмотри у тебя основное приложение увеличилось в размере , на столько сколько занимает программа встраимоваемая в ресурс.
-=ЮрА=-
Заблокирован
Автор FAQ
01.01.2013, 20:22     Извлечение .exe из ресурса #18
slavikg, поясни ещё раз у тебя есть сторонняя программа из которой хочешь извлечь ресурс?Тогда нагугли себе любой редактор ресурсов - их в интернете как компоста на колхозном поле. Если же ты пишешь свой софт из которого нужно что то извлечь - то добавляй экзешник как Insert Resourse->Other file и твой экзешник станет ничем иным как набором байт в одной из секций приложений упаковщика. Т.е эти самые байты потом выкладывай на HDD да называй как хочешь. Так можно вшить и xls и jpg да всё что угодно. Вот тебе линк на wav в ресурсах посомтри да по аналогии для exe сотвори.
Ошибка AfxGetResourceHandle
slavikg
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 71
01.01.2013, 20:42  [ТС]     Извлечение .exe из ресурса #19
А как правильно ресурс создать я в вижулал студио. В самой программе не дает сделать должен в папке проекта в файл ресурса добавлять
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.01.2013, 20:58     Извлечение .exe из ресурса
Еще ссылки по теме:

Создание ресурса C++
Error C2086: char cmd[1024]: переопределение при пинге ресурса C++
Почему экзешник make.exe (вернее, его разновидность mingw32-make.exe) принимает неизвестные параметры? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
01.01.2013, 20:58     Извлечение .exe из ресурса #20
Цитата Сообщение от slavikg Посмотреть сообщение
А как правильно ресурс создать
А что же ты тему то тогда создавал , как извлеч из рессурсов ,если не знаешь как туда запихнуть !!!!!!!!!!!
Yandex
Объявления
01.01.2013, 20:58     Извлечение .exe из ресурса
Ответ Создать тему
Опции темы

Текущее время: 16:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru