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

C# Discussion :

Lire informations VB runtime exe en C#


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Inscrit en
    Septembre 2008
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 206
    Points : 93
    Points
    93
    Par défaut Lire informations VB runtime exe en C#
    Bonjour,

    Je souhaite récupérer les informations d'un Exe compilé avec VB6 en C#.

    Il me faut le type (win32, etc.) et la liste des dépendances (avec le nom, la version et le type) utilisées dans l’Exe.

    J'ai essayé avec Assembly et TypeLibInfo et ça ne fonctionne pas (normal pour Assembly...).

    J'ai déjà récupéré le nom et la version avec FileVersionInfo mais je ne peux pas récupérer le reste avec ça.

    Merci de votre aide.

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Bonjour

    Le plus simple est peut être de chercher sur le net le format du fichier, de l'ouvrir et de l'analyser.

    En gros tu veux faire ce que fait le Dependency Walker ?

    Quel est le besoin fonctionnel ici ?

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  3. #3
    Membre régulier
    Homme Profil pro
    Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Inscrit en
    Septembre 2008
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    Au risque de passer pour un noob

    Le plus simple est peut-être de chercher sur le net le format du fichier, de l'ouvrir et de l'analyser.
    Je ne comprends pas ce que tu veux dire...

    A propos de Dependency Walker (depends.exe), je ne l'ai jamais utilisé. En revanche, les informations que j'ai dessus semble en partie (je ne sais pas tout a propos de cet outils) à ce que je cherche à faire !

    Mon besoin est de créer un manifest. Je récupère déjà tous des informations relatives à des DLL externes compilées avec VB6 et il ne me manque "plus" que les informations sur l'Exe !

  4. #4
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour reitsab

    Regarde du cote de process.getmodules qui fournit des infos sur les modules dll charges de ton .exe vb6 apres chargement........

    code sample (rubrique MSDN Doc- ProcessModule, classe ) qui liste les infos de notepad.exe :
    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
     
    Process myProcess = new Process();
    // Get the process start information of notepad.
    ProcessStartInfo  myProcessStartInfo = new ProcessStartInfo("notepad.exe");
    // Assign 'StartInfo' of notepad to 'StartInfo' of 'myProcess' object.
    myProcess.StartInfo = myProcessStartInfo;
    // Create a notepad.
    myProcess.Start();      
    System.Threading.Thread.Sleep(1000);
    ProcessModule myProcessModule;
    // Get all the modules associated with 'myProcess'.
    ProcessModuleCollection myProcessModuleCollection = myProcess.Modules;
    Console.WriteLine("Properties of the modules  associated "
       +"with 'notepad' are:");
    // Display the properties of each of the modules.
    for( int i=0;i<myProcessModuleCollection.Count;i++)
    {
       myProcessModule = myProcessModuleCollection[i];
       Console.WriteLine("The moduleName is "
          +myProcessModule.ModuleName);         
       Console.WriteLine("The " +myProcessModule.ModuleName + "'s base address is: "
          +myProcessModule.BaseAddress);
       Console.WriteLine("The " +myProcessModule.ModuleName + "'s Entry point address is: "
          +myProcessModule.EntryPointAddress);
       Console.WriteLine("The " +myProcessModule.ModuleName + "'s File name is: "
          +myProcessModule.FileName);
    }
    // Get the main module associated with 'myProcess'.
    myProcessModule = myProcess.MainModule;
    // Display the properties of the main module.
    Console.WriteLine("The process's main moduleName is:  "
       +myProcessModule.ModuleName);     
    Console.WriteLine("The process's main module's base address is: "
       +myProcessModule.BaseAddress);
    Console.WriteLine("The process's main module's Entry point address is: "
       +myProcessModule.EntryPointAddress);
    Console.WriteLine("The process's main module's File name is: "
       +myProcessModule.FileName);
    myProcess.CloseMainWindow();
    et regarde dans les membres de processmodule pour voir ce qui peut t'interesser......
    bon code.....

  5. #5
    Membre régulier
    Homme Profil pro
    Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Inscrit en
    Septembre 2008
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    Merci MABROUKI,

    Ta solution permet effectivement de récupérer les modules utilisés dans un Exe. En revanche, cette méthode n'aime apparemment pas les DLL .NET !

    Du coup, j'ai laissé tomber, j'utilise les Assembly quand il s'agit de DLL .NET et les TypeLibInfo pour les DLL COM.

    Mes fonctions pour l'exécutable me permettent seulement de récupérer la version et le nom de l’Exe, ce qui est suffisant.

    Je voulais faire une appli magique qui permettait de généré des manifest pour des appli VB ou .NET mais c'est trop compliqué chronophage. Un partie de la construction du manifest est donc en dure étant donné que la demande était au départ seulement pour une application !

    Merci

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par reitsab Voir le message
    Merci MABROUKI,

    Ta solution permet effectivement de récupérer les modules utilisés dans un Exe. En revanche, cette méthode n'aime apparemment pas les DLL .NET !
    Les deux formats n'ayant pas beaucoup de points commun, c'est assez normal. Le format binaire de Win32 est bien antérieur à .NET

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  7. #7
    Membre régulier
    Homme Profil pro
    Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Inscrit en
    Septembre 2008
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Spécialiste en Maintenance Applicative / Developpeur C#, VB, PL-SQL, T-SQL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Les deux formats n'ayant pas beaucoup de points commun, c'est assez normal. Le format binaire de Win32 est bien antérieur à .NET
    Tout à fait, c'est pour ca que je me suis résigner à utiliser d'autres méthodes même si une partie des informations du manifest est en dure dans le code, comme le type de l'Assembly :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <dependency>
    <dependentAssembly>
    <assemblyIdentity type='win32' name='dllUtilities' version='1.0.0.0' /> 
    </dependentAssembly>
    </dependency>

Discussions similaires

  1. information version fichier exe
    Par rolandjarry dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 18/09/2010, 05h45
  2. Réponses: 3
    Dernier message: 04/01/2008, 13h59
  3. Debugging informations for "test.exe" cannot be found
    Par _Michel dans le forum Visual C++
    Réponses: 4
    Dernier message: 10/11/2007, 22h35
  4. Information sur RUNTIME
    Par joujoukinder dans le forum Windows
    Réponses: 6
    Dernier message: 02/03/2005, 18h59
  5. Informations sur un exe (dans les propriétés windows)
    Par SteelBox dans le forum Windows
    Réponses: 6
    Dernier message: 06/07/2004, 18h20

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