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

VB.NET Discussion :

[VB.Net] Comment gérer les fichiers ? [Non suivi]


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Points : 4
    Points
    4
    Par défaut [VB.Net] Comment gérer les fichiers ?
    Bonjour,

    J'ai une application en vb.net, celle ci a pour but de mettre a jour de facon automatique un parc informatique. Pour le moment, j'arrive à récuperer la liste des programmes installés ainsi que le nom de la machine. Je met ça dans un fichier et ce fichier, je l'envoie par socket. Mon problème est que je souhaiterai ouvrir et exploiter ce fichier par un serveur afin de l'enregistrer dans une base de donnée.

    Comment gere t-on les fichiers en vb.net ?


    Je vous en remercie par avance,

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    La question étant très vague, regarde du côté de l'espace de noms System.IO
    Pas de questions techniques par MP

  3. #3
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    En effet ta question est très vague, que veux-tu faire précisement que tu n'arrive pas à faire ?
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 212
    Points : 125
    Points
    125
    Par défaut
    Bonsoir,

    comment fais-tu pour récupérer la liste des programmes installés sur une machine stp ?

    Merci

    Ludo

  5. #5
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 53
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par exclusif
    Bonsoir,

    comment fais-tu pour récupérer la liste des programmes installés sur une machine stp ?

    Merci

    Ludo

    via WMI est une solution ...
    Ouam'

    Pensez à utiliser lorsque c'est le cas, et pensez au délestage si vos questions ne pourront servir aux autres...

    Pensez à lire la FAQ PHP

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 212
    Points : 125
    Points
    125
    Par défaut
    Oui mais comment ?

    Avec les WMI on ne peut pas avoir que des infos sur le matériel ?

  7. #7
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Août 2006
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    Bonsoir,

    Pour répondre à la question de JPV_MJ (si je l'ai bien comprise)
    Il faut que tu utilises la classe StreamReader.
    Petit exemple d'utilisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      Dim StreamRead As StreamReader = File.OpenText("c:\test\test.txt")
      Dim Contenu As String = StreamRead.ReadToEnd
      StreamRead.Close()
      RichTextBox1.Text = Contenu
    Cependant j'imagine que tu traiteras ton fichier ligne par ligne pour les "inserts" dans ta base de données et par conséquent il serait préférable de faire ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
       Dim StreamRead As StreamReader = File.OpenText("c:\test\test.txt")
       Dim Contenu As String
     
       Do Until StreamRead.Peek = -1
         'Ici ta procédure qui insert chaque ligne dans ta base de données
         Contenu = StreamRead.ReadLine
       Loop
       StreamRead.Close()


    En ce qui concerne la question de exclusif, je t'ai fais un bout de code que tu pourras améliorer qui te retourne la liste des programmes installés sur ton PC.
    J'ai redirigé la sortie standard vers un string. Tu devras néanmoins retravailler un peu la chaîne pour améliorer la présentation. Il existe peut-être une méthode plus simple mais je ne la connais pas ;-)

    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
     
         Dim ListerProgrammes As New Process()
            ListerProgrammes.StartInfo.FileName = "wmic"
            ListerProgrammes.StartInfo.Arguments = "product get"
     
            ListerProgrammes.StartInfo.UseShellExecute = False
            ListerProgrammes.StartInfo.RedirectStandardOutput = True
            ListerProgrammes.Start()
     
            Dim MonStream As StreamReader
            Dim MaChaine As String = Nothing
            While Not ListerProgrammes.StandardOutput.EndOfStream
                MonStream = ListerProgrammes.StandardOutput
                MaChaine += MonStream.ReadLine()
            End While
            ListerProgrammes.Close()
     
            'Ne prend pas peur à l'affichage ;-)
            ' il faudra faire une petite retouche
            RichTextBox1.Text = MaChaine
    J'espère que même si ce ne sont pas les solutions optimales, cela vous aidera.

    M@t

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 212
    Points : 125
    Points
    125
    Par défaut
    En effet ca affiche la liste des programmes installés. Va falloir que je regarde ça de plus près pour essayer de filtrer les infos et surtout pour pas gérer dans un nouveau process mais dans mon appli.

    Merci

  9. #9
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Août 2006
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    Bonsoir Exclusif,

    Aprés un peu de recherche j'arrive au résultat suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim Registre As String =
     "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
    Dim ClefRegistre As RegistryKey =
     Registry.LocalMachine.OpenSubKey(Registre)
     
    For Each clef As String In ClefRegistre.GetSubKeyNames
      Dim SousClef As RegistryKey = ClefRegistre.OpenSubKey(clef)
      If SousClef.GetValue("DisplayName") <> "" Then
         ListBox1.Items.Add(SousClef.GetValue("DisplayName"))
      End If
    Next
    J'espère que cela te convient.

    Math

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 212
    Points : 125
    Points
    125
    Par défaut
    CA me convient amplement, merci beaucoup C'est supe sympa d'avoir passé autant de temps sur mon problème.

    De mon côté j'ai trouvé ça pour utiliser les wmi :

    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
     
    Imports System
    Imports System.Management
    Imports System.Windows.Forms
     
    Namespace WMISample
     
      Public Class MyWMIQuery
     
        Public Overloads Shared Function Main() As Integer
     
          Try
             Dim searcher As New ManagementObjectSearcher( _
               "root\CIMV2", _
               "SELECT * FROM Win32_Product") 
     
             For Each queryObj As ManagementObject in searcher.Get()
                Console.WriteLine("-----------------------------------")
                Console.WriteLine("Win32_Product instance")
                Console.WriteLine("-----------------------------------")
                Console.WriteLine("InstallDate: {0}", queryObj("InstallDate"))
                Console.WriteLine("Name: {0}", queryObj("Name"))
              Next
           Catch err As ManagementException
             MessageBox.Show("An error occurred while querying " 
     + "for WMI data: " + err.Message)
            End Try
         End Function
      End Class
    End Namespace
    Il reste plus qu'à virer les console.writeline et à faire en sorte que cela s'affiche dans une listview mais ça je sais faire

    ++

    Ludo

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 212
    Points : 125
    Points
    125
    Par défaut
    Citation Envoyé par Mathieu Francesch
    Bonsoir Exclusif,

    Aprés un peu de recherche j'arrive au résultat suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim Registre As String =
     "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
    Dim ClefRegistre As RegistryKey =
     Registry.LocalMachine.OpenSubKey(Registre)
     
    For Each clef As String In ClefRegistre.GetSubKeyNames
      Dim SousClef As RegistryKey = ClefRegistre.OpenSubKey(clef)
      If SousClef.GetValue("DisplayName") <> "" Then
         ListBox1.Items.Add(SousClef.GetValue("DisplayName"))
      End If
    Next
    J'espère que cela te convient.

    Math
    Bonsoir Mathieu

    J'ai essayé ton code ici dessus pour récupérer la liste des programmes installés mais j'obtiens l'erreur suivante : Une erreur est survenue :

    La référence d'objet n'est pas définie à une instance d'un objet.

    Et je peux pas utiliser les WMI car certains logiciels ne sont pas détectés.

    Merci

    Ludo

  12. #12
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Août 2006
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    Bonjour Ludo,

    Chez moi cela fonctionne mais bon ... Il doit y avoir une raison alors pour commencer :

    Lorsque tu regardes dans ta base de registres est ce que tu trouves la clef : SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall dans LocalMachine

    Sinon j'ai apporté une petite modification au code mais je ne pense pas que
    cela arrange quelque chose concernant ton problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    'Au préalable imports Windows.W32
     
            Dim Registre As String = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
            Dim ClefRegistre As RegistryKey = Registry.LocalMachine.OpenSubKey(Registre)
     
            For Each clef As String In ClefRegistre.GetSubKeyNames
                Dim SousClef As RegistryKey = ClefRegistre.OpenSubKey(clef)
                Try
                    ListBox1.Items.Add(SousClef.GetValue("DisplayName"))
                Catch ex As Exception
                End Try
            Next
    Tiens moi au courant,

    Math

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 212
    Points : 125
    Points
    125
    Par défaut
    Parfait ca fonctionne très bien maintenant.

    En fait il me manquait la référence (Imports Microsoft.W32) donc j'avais corriger les erreurs en appliquant ce que VS2005 m'avait proposé mais ca me générait l'erreur cité plus haut.

    En tout cas maintenant tout baigne ! Merci bcp

    Ludo

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/02/2012, 12h23
  2. Réponses: 6
    Dernier message: 03/05/2006, 11h01
  3. Réponses: 9
    Dernier message: 13/04/2006, 11h40
  4. Réponses: 5
    Dernier message: 28/11/2005, 09h52
  5. Réponses: 5
    Dernier message: 25/07/2005, 09h29

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