• Viernes 3 de Abril de 2026, 07:40

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - gayo1100

Páginas: [1]
1
Visual C++ / Como modificar este código VC++...
« en: Lunes 2 de Febrero de 2009, 10:29 »
:(  Hola, buscando en la web encontré un código para cambiar el numero de serie del disco duro, he intentado modificarlo para que cambie el numero de serie en  dos discos duros a la vez, por ej. C: y D:, pero me da fallos, la verdad no soy experto en VC++ mis conocimientos son mas bién no amplios, lo he intentado pero nada de nada, agradecería a algún experto me hechara una mano.
Mi idea es que una vez que se ejecute el archivo (archivo.cpp), que se vuelva a ejecutar otra vez el mismo codigo en otro archivo (archivo2.cpp)-->este seria para D: , pero cuando he probrado a insertar en el proyecto (archivo2.cpp) da fallos...
El proyecto consta de : archivo.cpp, cabecera.h, cabecera.cpp
Muchas gracias de antemano.

los archivos (*.h) no estan, pero el principal (archivo.cpp) es  :
///////////////////////////////////////////////////////////////

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>


void ShowErrorString(char *str)
{
  printf(str);
}

void ChangeSerialNumber(DWORD Drive, const DWORD newSerial)
{
  DiskSector disk;

  const max_pbsi = 1;

  struct partial_boot_sector_info
  {
    LPSTR Fs;
    DWORD FsOffs;
    DWORD SerialOffs;
  };

  partial_boot_sector_info pbsi[max_pbsi] =
  {
 
   {"NTFS",0x48}
 
  };

  TCHAR szDrive[12];

  char Sector[512];

  DWORD i;

  sprintf(szDrive, "%c:\", Drive & 0xFF);

  if (!disk.Open(szDrive))
  {
    ShowErrorString("No se puede abrir el disco !");
    return;
  }

  // read sector
  if (!disk.ReadSector(0, Sector))
  {
    ShowErrorString("No se puede leer el sector!");
    return;
  }

  // try to search for a valid boot sector
  for (i=0;i<max_pbsi;i++)
  {
    if (strncmp(pbsi.Fs, Sector+pbsi.FsOffs, strlen(pbsi.Fs)) == 0)
    {
      // we found a valid signature
      break;
    }
  }

  // patch serial number
  *(PDWORD)(Sector+pbsi.SerialOffs) = newSerial;

  // write boot sector
  if (!disk.WriteSector(0, Sector))
  {
    ShowErrorString("No se puede escribir el sector!");
    return;
  }

  ShowErrorString("Cambio realizado !");
                 
}

int main(int argc, char **argv)

{
  if (argc < 3)
  {
    ChangeSerialNumber('C', 0x12345678);  // aqui cambia en C:
    return 0;                                        
  }                                                                            
  DWORD n;

  char *temp;
  n = strtol((const char *)argv[2], &temp, 16);
  ChangeSerialNumber(toupper(argv[1][0]), n);
  return 0;
}
//////////////////////////////////////////////////////////

Páginas: [1]