IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Outils Delphi Discussion :

[Inno Setup] Sécuriser un installateur


Sujet :

Outils Delphi

  1. #1
    Candidat au Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Mars 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Mars 2016
    Messages : 6
    Points : 2
    Points
    2
    Par défaut [Inno Setup] Sécuriser un installateur
    Bonjour,

    J'ai créé un installeur dans Inno Setup et j'aimerais le protéger. J'ai déjà un mot de passe, mais tout le monde peut l'utiliser en fait ... Du coup, j'aimerais savoir si avec Inno Setup je pouvais sécuriser mon setup avec un mot de passe utilisable deux fois (par ex.) et après rendre le setup inutilisable ?
    Ou alors avoir une vérification internet des personnes qui installent le setup ...


    HELP ME PLS

    CDLT

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 455
    Points : 24 867
    Points
    24 867
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Candidat au Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Mars 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Mars 2016
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Petit soucis
    RE


    je suis en train de créer un installeur avec inno setup, j'aimerais récupérer un ID de disque dur pour que chaque installation soit propre à un ordinateur, j'ai trouvé un code qui correspont à peut pres sauf que j'ai une erreur dans ce code .
    FORMAT2 n'est pas identifié, pouvez vous me guider ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    [Setup]
    AppName=Filesystem
    AppVerName=Filesystem
    Uninstallable=false
    UpdateUninstallLogAppName=false
    DisableDirPage=false
    DisableProgramGroupPage=true
    DefaultDirName={pf}\Filesystem
    DisableStartupPrompt=true
     
    [Code]
    function GetVolumeInformation(
      lpRootPathName: PChar;
      lpVolumeNameBuffer: PChar;
      nVolumeNameSize: LongInt;
      var lpVolumeSerialNumber: LongInt;
      lpMaximumComponentLength: LongInt;
      lpFileSystemFlags : LongInt;
      lpFileSystemNameBuffer: PChar;
      nFileSystemNameSize: LongInt) : Integer;
     external 'GetVolumeInformationA@kernel32.dll';
     
    function GetLastError () : Integer;
     external 'GetLastError@kernel32.dll';
     
     
    function NextButtonClick(CurPage: Integer): Boolean;
    var srcdisk : String;
        ercode: Integer; sernum: LongInt;
        fstype: String;
    begin
      Result := true;
      if CurPage = wpSelectDir then
      begin
        srcdisk := AddBackslash (ExtractFileDrive (WizardDirValue ));
        fstype := StringOfChar (' ', 12);
        if GetVolumeInformation (srcdisk, '', 0, sernum, 0, 0, fstype, 11) = 0 then
        begin
          ercode := GetLastError ();
          MsgBox (SysErrorMessage (ercode), mbError, MB_OK);
          Result := false;
        end else
        begin
          fstype := CastIntegerToString (CastStringToInteger (fstype));
          MsgBox (Format2 ('Volume %s has filesystem type (%s)', srcdisk, fstype), mbInformation, MB_OK);
          // Only carry on if the file system is NTFS.
           ');
        end;
      end;
    end;

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 691
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 691
    Points : 13 121
    Points
    13 121
    Par défaut
    Format existe mais pas Format2.

    Mais je ne sais pas d'où tombe ce code, il ne fonctionnera pas. Mauvaise convention d'appel (stdcall) et variables mal déclarées (pdword et non LongInt).
    De plus, lpFileSystemNameBuffer contient le nom du système de fichier (soit NTFS, FAT32, etc.) et non un entier. C'est sans doute lpVolumeSerialNumber que tu aimerais utiliser mais ce numéro n'a rien d'unique (il représente la date et l'heure de formatage) et peut être modifié facilement.

    Bref, dans la version Unicode d'Inno Setup (celle que j'utilise), le code (version ANSI) se présenterait ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    [Code]
     
    const
      MAX_PATH = 260;
     
    function GetVolumeInformation(
      lpRootPathName: PAnsiChar;
      lpVolumeNameBuffer: PAnsiChar; 
      nVolumeNameSize: dword; 
      var lpVolumeSerialNumber: dword;
      var lpMaximumComponentLength: dword;
      var lpFileSystemFlags: dword;
      lpFileSystemNameBuffer: PAnsiChar;
      nFileSystemNameSize: dword): bool;
      external 'GetVolumeInformationA@kernel32.dll stdcall';
     
    function NextButtonClick(CurPage: Integer): Boolean;
    var 
      RootPath    :AnsiString;
      VolName     :AnsiString;
      FileSysName :AnsiString;
      VolSerial   :dword;
      CompoMaxLen :dword;
      FileFlags   :dword;
     
    begin
      Result := TRUE;
     
      if CurPage = wpSelectDir then
      begin
        RootPath := AddBackslash(ExtractFileDrive(WizardDirValue));
        SetLength(VolName, MAX_PATH +1);
        SetLength(FileSysName, MAX_PATH +1);
     
        if GetVolumeInformation(PAnsiChar(RootPath), PAnsiChar(VolName), Length(VolName), VolSerial, CompoMaxLen, FileFlags, PAnsiChar(FileSysName), Length(FileSysName)) 
        then MsgBox(Format('Volume %s has filesystem type (%s)', [RootPath, PAnsiChar(FileSysName)]), mbInformation, MB_OK)
        else MsgBox(SysErrorMessage(DLLGetLastError), mbError, MB_OK);
      end;
    end;

  5. #5
    Candidat au Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Mars 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Mars 2016
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci je vais regarder !

    Citation Envoyé par Andnotor Voir le message
    Format existe mais pas Format2.

    Mais je ne sais pas d'où tombe ce code, il ne fonctionnera pas. Mauvaise convention d'appel (stdcall) et variables mal déclarées (pdword et non LongInt).
    De plus, lpFileSystemNameBuffer contient le nom du système de fichier (soit NTFS, FAT32, etc.) et non un entier. C'est sans doute lpVolumeSerialNumber que tu aimerais utiliser mais ce numéro n'a rien d'unique (il représente la date et l'heure de formatage) et peut être modifié facilement.

    Bref, dans la version Unicode d'Inno Setup (celle que j'utilise), le code (version ANSI) se présenterait ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    [Code]
     
    const
      MAX_PATH = 260;
     
    function GetVolumeInformation(
      lpRootPathName: PAnsiChar;
      lpVolumeNameBuffer: PAnsiChar; 
      nVolumeNameSize: dword; 
      var lpVolumeSerialNumber: dword;
      var lpMaximumComponentLength: dword;
      var lpFileSystemFlags: dword;
      lpFileSystemNameBuffer: PAnsiChar;
      nFileSystemNameSize: dword): bool;
      external 'GetVolumeInformationA@kernel32.dll stdcall';
     
    function NextButtonClick(CurPage: Integer): Boolean;
    var 
      RootPath    :AnsiString;
      VolName     :AnsiString;
      FileSysName :AnsiString;
      VolSerial   :dword;
      CompoMaxLen :dword;
      FileFlags   :dword;
     
    begin
      Result := TRUE;
     
      if CurPage = wpSelectDir then
      begin
        RootPath := AddBackslash(ExtractFileDrive(WizardDirValue));
        SetLength(VolName, MAX_PATH +1);
        SetLength(FileSysName, MAX_PATH +1);
     
        if GetVolumeInformation(PAnsiChar(RootPath), PAnsiChar(VolName), Length(VolName), VolSerial, CompoMaxLen, FileFlags, PAnsiChar(FileSysName), Length(FileSysName)) 
        then MsgBox(Format('Volume %s has filesystem type (%s)', [RootPath, PAnsiChar(FileSysName)]), mbInformation, MB_OK)
        else MsgBox(SysErrorMessage(DLLGetLastError), mbError, MB_OK);
      end;
    end;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. creer un installeur!
    Par bakonu dans le forum DirectX
    Réponses: 9
    Dernier message: 30/05/2008, 23h03
  2. msi ou comment réaliser un installeur?
    Par herzleid dans le forum Delphi
    Réponses: 11
    Dernier message: 09/04/2007, 19h27
  3. comment securiser l'installation d'une application
    Par silya dans le forum C++Builder
    Réponses: 9
    Dernier message: 05/03/2004, 14h34
  4. [installeur] Le couteau suisse des applications web
    Par Tournesol dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 05/01/2004, 17h19
  5. Sécuriser son serveur Apache sous Linux
    Par rolkA dans le forum Sécurité
    Réponses: 6
    Dernier message: 01/12/2003, 15h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo