Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di xscc
    Registrato dal
    Jun 2009
    Messaggi
    8

    [C++] Errore programma per scrivere nel registro

    Ciao a tutti.
    Sono un principiante e stavo cercando di fare un programma per scrivere nel registro prendendo dei dati da un file .ini.
    Dev c++ compila il file ma quando lo esegue si blocca e mi compare la schermata di windows che dice che il programma ha smesso di funzionare.
    il codice è questo (cancellando alcuni parti sono arrivato alla conclusione che l'errore sia nella prima parte, ma non ne sono proprio sicuro):
    codice:
    #include <stdlib.h>
    #include <string.h>
    #include <windows.h>
    char ini_file[8]="set.ini";
    
    int read_ini_sys();
    int read_ini_sys()
    {
    int sys_type;
    sys_type=GetPrivateProfileInt("Computer","Sys",64,ini_file);
    return sys_type;
    }
    
    char read_ini_name();
    char read_ini_name()
    {
        char* result;
        char name;
    name=GetPrivateProfileString("File","Name","",result,250,ini_file);
    return name;
    }
    
    char read_ini_dir();
    char read_ini_dir()
    {
        char* result;
        char dir;
    dir=GetPrivateProfileString("File","Dir","",result,500,ini_file);
    return dir;
    }
    
    main ()
    {
         int sys;
         char* name;
         char* dir;
         sys=read_ini_sys();
         name[100]=read_ini_name();
         dir[500]=read_ini_dir();
         char* a64;
         char* a32;
         char* b;
         a64="reg add \"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run\" /v ";
         a32="reg add \"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\" /v ";
         switch (sys)
         {
                case 64 :
         b=strcat(a64,name);
         break;
                case 32 :
         b=strcat(a32,name);
         break;
         }
         char* c=" /t REG_SZ /d \"";
         char* d=strcat(b,c);
         char* e=strcat(d,dir);
         char* f="\" /f";
         char* fine=strcat(e,f);
         system(fine);
    return 0;
    }
    Grazie a tutti quelli che risponderanno.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Utilizzi dei semplici char al posto di vettori di char e utilizzi puntatori a char mai inizializzati ...

    Devi rivedere con attenzione le cognizioni di base su vettori e puntatori prima di scrivere programmi in C ...

    E poi non ha proprio senso scrivere dei comandi da eseguire tramite system.
    L'accesso al registro si fa con le apposite funzioni di sistema.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.