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 :

Probleme recuperation valeur et modification valeur registre


Sujet :

VB.NET

  1. #21
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Essaye de mettre un new devant le registrykey au niveau de la déclaration de ta variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Reg As New RegistryKey

  2. #22
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par conflito Voir le message
    Essaye de mettre un new devant le registrykey au niveau de la déclaration de ta variable.

    Dim Reg As New RegistryKey
    RegistryKey n'a pas de constructeur public, donc ça ne compilera même pas...

  3. #23
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Février 2009
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 150
    Points : 101
    Points
    101
    Par défaut
    Bonjour tous le monde, me revoila

    je reviens vous embeter parceque je suis toujours perdu.

    Quand je mets un log, j'obtiens l'erreur suivante que ce soit pour écrire ou pour lire :

    14/12/2009 02:07:11: exception :
    La référence d'objet n'est pas définie à une instance d'un objet.


    J'utilise le code suivant pour fouiller dans ma base de registre :

    ET IL EST A NOTER QUE LE CODE CI DESSOUS MARCHE TRES BIEN SI JE L UTILISE DANS UN AUTRE PROGRAMME.

    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
     
     
        Public Function getValeurEssAuto() As String
            Dim tmp As String = ""
            Dim Reg As RegistryKey
            'Ouvre l'instance de la clé du produit
            Reg = Registry.CurrentUser.OpenSubKey("EssSwitch", False)
            'Recupere la valeur
            tmp = Reg.GetValue("essAuto")
     
            'ferme la cle
            Reg.Close()
            Return tmp
        End Function
     
        Public Sub setValeurEssAuto(ByVal valeur As String)
            Dim Reg As RegistryKey
            'Ouvre l'instance de la clé du produit
            Reg = Registry.CurrentUser.OpenSubKey("EssSwitch", True)
            'Recupere la valeur
            Reg.SetValue("essAuto", valeur)
            'ferme la cle
            Reg.Close()
        End Sub
    Pitié ^^ et merci d'avance

  4. #24
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Février 2009
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 150
    Points : 101
    Points
    101
    Par défaut Tentative BackgroundWorker
    Bonjour,

    J'ai finalement opté pour la méthode du backgroundworker mais cela ne marche toujours pas. Voila celui ci ci dessous (colorié en rouge ds le code du windows service)

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    Imports System.Security.Cryptography
    Imports System.text
    Imports System.Net.sockets
    Imports System
    Imports System.Net
    Imports System.Threading
    Imports Microsoft.VisualBasic
    Imports System.ServiceProcess.ServiceBase
    Imports Microsoft.Win32
    Imports System.Windows.forms
    
    '----------------------------------------------
    Public Class EssWitchService
    
    
        '--------------------------------- Declaration de variables -----------------------------------
        Public reception As New Threading.ManualResetEvent(False)
        Dim toto As String = ""
        Private listener As Net.Sockets.TcpListener
        Const PORT_NUM As Integer = 1039
        Dim EndPoint As Net.IPEndPoint
        Dim regg As String = ""
    
        '---Fonction au demarrage du service :Lancement du thread correspondant à la fonction "General" et qui va tourner en boucle---
        Protected Overrides Sub OnStart(ByVal args() As String)
            Dim thread As New System.Threading.Thread(AddressOf General)
            thread.IsBackground = True
            thread.Start()
        End Sub
    
        '----------------------------Thread qui va tourner en boucle et attendre une connexion d'un client-------------------
        Public Sub General()
    
            Try
                Dim ipLocale As Long = 16777343
                EndPoint = New Net.IPEndPoint(ipLocale, 1039)
                Dim listener As New TcpListener(EndPoint)
                listener.Start()
    
                While True
                    reception.Reset()
                    listener.BeginAcceptTcpClient(New AsyncCallback(AddressOf AcceptCallback), listener)
                    reception.WaitOne()
                End While
    
            Catch ex As Exception
                System.Windows.Forms.MessageBox.Show(ex.Message)
            End Try
        End Sub
    
    
    
        
    
    
        '---------------------------------Fonction qui sera lancée lorsque qu'un client va se connecter--------------------------
        Public Sub AcceptCallback(ByVal ar As IAsyncResult)
            Try
    
                Dim bit(1024) As Byte
                Dim biit(1024) As Byte
                Dim listener As TcpListener = CType(ar.AsyncState, TcpListener)
                Dim client As TcpClient = listener.EndAcceptTcpClient(ar)
                Dim stream As NetworkStream = client.GetStream()
                stream.Read(bit, 0, bit.Length)
                Dim valeurrecue As String = System.Text.Encoding.ASCII.GetString(bit)
    
                Dim cle As String = getMd5Hash()
                Dim tailleCle As Integer = cle.Length
                Dim tailleVal As Integer = valeurrecue.Length
    
                Dim tailleV As Integer = tailleVal - tailleCle
                Dim key As String = valeurrecue.Substring(0, tailleCle)
                Dim val1 As String = valeurrecue.Substring(tailleCle, tailleV)
                Dim longueur As Integer = valeurrecue.Length()
                'Dim val2 As String = val1.Trim()
                'Dim log As log4Raid
                'log = New log4Raid("C:\User\U349428\Documents\Visual Studio 2005\Projects\EssWitchService\log", "log")
                'log.EcrireLog("valeur2", val2 + "p")
                Dim cc As Integer = val1.IndexOf("#")
                Dim val2 As String = val1.Substring(0, cc)
                Dim ok As Boolean = False
                If key.Equals(cle) Then
                    ok = True
                End If
    
                If ok Then
                    BG1.RunWorkerAsync(val2)
                    biit = System.Text.Encoding.ASCII.GetBytes(toto.ToCharArray)
                    stream.Write(biit, 0, biit.Length)
                End If
    
                reception.Set()
            Catch ex As Exception
    
            End Try
    
        End Sub
    
        '--------------Fonction de codage--------------------------------------------
        Function getMd5Hash() As String
    
            Dim ordi As String = System.Environment.MachineName
            Dim acrypt As String = ordi
            Dim md5Hasher As MD5 = MD5.Create()
    
            Dim data As Byte() = md5Hasher.ComputeHash(Encoding.Default.GetBytes(acrypt))
    
            Dim sBuilder As New StringBuilder()
    
            Dim i As Integer
            For i = 0 To data.Length - 1
                sBuilder.Append(data(i).ToString("x2"))
            Next i
    
            Return sBuilder.ToString()
    
        End Function
    
    
        '----------------- Fonction correspondant à l'arret du service ---------------------------
        Protected Overrides Sub OnStop()
            listener.Stop()
        End Sub
    
        Private Sub BG1_Work(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BG1.DoWork
            Dim arg As String = CStr(e.Argument)
            Dim retour As String
            If (arg = "activ") Then
                retour = "on"
                e.Result = CStr(retour)
            ElseIf (arg = "desactiv") Then
                retour = "off"
                e.Result = CStr(retour)
            Else
                retour = "erreur"
                e.Result = CStr(retour)
            End If
    
        End Sub
    
        Private Sub BG1_RunWorkerCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BG1.RunWorkerCompleted
            Dim Resulte As String = CStr(e.Result)
            Dim renvoie As String
            Dim log As log4Raid
            log = New log4Raid("C:\User\U349428\Documents\Visual Studio 2005\Projects\EssWitchService\log", "log")
    
            If (Resulte = "on") Then
                Try
                    setValeurEssAuto("true")
                Catch ex As Exception
                    log.EcrireLog("exception", ex.Message)
                End Try
                renvoie = "activee"
    
            ElseIf (Resulte = "off") Then
                Try
                    setValeurEssAuto("false")
                Catch ex As Exception
                    log.EcrireLog("exception", ex.Message)
                End Try
                renvoie = "desactivee"
            Else
                    renvoie = "erreur"
            End If
            toto = renvoie
        End Sub
    End Class
    Il est à noter que dans le fichier log j'obtiens l'erreur :
    exception : La référence d'objet n'est pas définie à une instance d'un objet.
    Si quelqu'un a une idée, je suis preneur :p Merci d'avance et bonne journée

  5. #25
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Je t'ai déjà expliqué ce qui ne va pas mais tu n'as pas l'air de comprendre... donc je vais essayer encore une fois

    Comme je l'ai dit plus haut, la clé HKEY_CURRENT_USER est différente pour chaque utilisateur. Or les services Windows sont exécutés par un compte d'utilisateur spécifique (en général SYSTEM ou SERVICE LOCAL). Donc la clé HKEY_CURRENT_USER\EssSwitch peut très bien exister pour toi mais pas pour l'utilisateur qui exécute le service. Dans ce cas OpenSubKey renvoie Nothing, donc Reg vaut Nothing, donc Reg.GetValue lève une exception

    Si tu ne veux pas avoir ce problème, mets plutôt ta clé EssSwitch dans HKEY_LOCAL_MACHINE, qui est commun à tous les utilisateurs

  6. #26
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Février 2009
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 150
    Points : 101
    Points
    101
    Par défaut
    Franchement merci !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/02/2014, 13h28
  2. Modification valeur Base de Registres
    Par Br21_b dans le forum VBScript
    Réponses: 1
    Dernier message: 05/01/2009, 14h23
  3. probleme:recuperer une valeur stockée dans une session
    Par oasma dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 26/03/2007, 00h38
  4. Réponses: 4
    Dernier message: 12/06/2006, 13h08
  5. Probleme recuperation d'une valeur : script vbs -> .bat
    Par pinpin_du_net dans le forum Windows
    Réponses: 3
    Dernier message: 10/05/2005, 12h43

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