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] Droits d'accès aux fichiers - Services


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 9
    Points : 10
    Points
    10
    Par défaut [VB.Net] Droits d'accès aux fichiers - Services
    Bonsoir,

    J'ai créé un service Windows. Je tiens à ce que celui-ci puisse lire / écrire dans un fichier.

    Lorsque je debugg le code dans une application avec une interface graphique, les méthodes et fonctions fonctionnent parfaitement. Mais mises dans mon service, elles ne fonctionnent plus.

    En réalité, le fichier ne semble pas du tout être ni lut, ni écrit.

    Voici quelques fragments de code pour comprendre:

    Mon installer:
    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
     
             installer = New ServiceInstaller
            processInstaller = New ServiceProcessInstaller
     
            With installer
                .DisplayName = "CreaProtect"
                .Description = "Gestion du temps d'utilisation de l'ordinateur par session"
                .ServiceName = "CreaProtect"
                .StartType = ServiceStartMode.Automatic
     
            End With
     
            With processInstaller
                .Account = ServiceAccount.LocalSystem
            End With
     
            Me.Installers.Add(installer)
            Me.Installers.Add(processInstaller)
    Mon service
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Registre.Charger("C:\CreaProtectData.xml")
     
    ...
     
    If Not Registre.IsCurrentAdmin Then
                Windows.Forms.MessageBox.Show("Attention, le fichier de configuration a été modifié", "Attention", Windows.Forms.MessageBoxButtons.OK, Windows.Forms.MessageBoxIcon.Stop, Windows.Forms.MessageBoxDefaultButton.Button1, Windows.Forms.MessageBoxOptions.DefaultDesktopOnly)
            End If
    Le code du fichier de registre (faisant partie d'une DLL):
    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
     
    If Not File.Exists("C:\CreaProtectData.xml") Then Exit Function
     
                Dim contenu As String = File.ReadAllText("C:\CreaProtectData.xml")
                Dim decoder As XmlSerializer = New XmlSerializer(GetType(Utilisateurs))
     
                Utilisateurs = decoder.Deserialize(New StringReader(contenu))
     
                Dim md5 As Byte() = Security.Cryptography.MD5CryptoServiceProvider.Create.ComputeHash(Encoding.ASCII.GetBytes(contenu.ToCharArray))
     
                Dim key As RegistryKey = Registry.LocalMachine.OpenSubKey("Software\CreaProtect\Config")
     
                Dim b As Byte
                Dim r As Boolean = True
     
                For b = 0 To md5.Length - 1
                    If Not md5(b) = key.GetValue("MD5")(b) Then r = False
                Next
     
                Return r
    Je n'ai à aucun moment un code erreur, les journaux sont clean... Bref, je ne comprend pas ...

    Quelqu'un aurait-il une idée ?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    En fait, il semblerait que je me sois trompé: le fichier est bien lut / écrit, mais, c'est cette partie du code qui ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
            Public Function isCurrentUser() As Boolean
                Dim userIdentity As WindowsIdentity = WindowsIdentity.GetCurrent
     
                If userIdentity.Name.Substring(userIdentity.Name.LastIndexOf("\") + 1) = Nom Then Return True Else Return False
            End Function
    En effet, puisque c'est un service, il fonctionne sous l'Utilisateur System et non l'utilisateur courant. Comment puis-je récupérer la valeur de l'utilisateur courant par le service ?

  3. #3
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    Tu as une variable d'environnement que tu pourrais utiliser pour recupérer l'utilisateur courant


    il vaut mieux prendre son pied que de se prendre la tête!!

    http://bossun.noxblog.com

Discussions similaires

  1. Droits d'accès aux fichiers
    Par Razgriz dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 03/07/2007, 15h55
  2. Réponses: 6
    Dernier message: 21/04/2007, 20h08
  3. Droits d'acces aux fichiers dans dossier en partage
    Par catoucat dans le forum Windows XP
    Réponses: 3
    Dernier message: 03/07/2006, 02h47
  4. [Configuration] droits d'accès aux fichiers
    Par drommk dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 20/06/2006, 17h31
  5. [Tomcat]Droit d'accès aux fichiers créés par une servlet
    Par loulouleboss dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 15/07/2004, 14h32

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