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 :

Test l'accès sur un fichier en vbnet .


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Janvier 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 39
    Par défaut Test l'accès sur un fichier en vbnet .
    comment test est ce que j'ai l’accès de modifier un fichier txt ou non ?

    par ce par fois je essayer de modifier un ficher il afficher une erreur accès refuser !!

    => donc je cherche comment testé est ce je peut modifier ou non ??!!

    ==>> en (vbnet)
    merci!!!!

  2. #2
    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
    Par défaut
    Tu peux utiliser cette classe :

    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
    Imports System.Security.Principal
    Imports System.Security.AccessControl
    Public Shared Class FileHelper
    	Public Shared Function HasPermissionOnDirectory(ByVal path As String, ByVal permission As FileSystemRights) As Boolean
    		Return HasPermission(path, permission, Directory.GetAccessControl)
    	End Function
    	Public Shared Function HasPermissionOnFile(ByVal path As String, ByVal permission As FileSystemRights) As Boolean
    		Return HasPermission(path, permission, File.GetAccessControl)
    	End Function
    	Private Shared Function HasPermission(ByVal path As String, ByVal permission As FileSystemRights, ByVal fileSecurityFactory As Func(Of String, FileSystemSecurity)) As Boolean
    		Try
    			Dim allow As var = False
    			Dim deny As var = False
    			Dim accessControlList As var = fileSecurityFactory(path)
    			Dim accessRules As var = accessControlList.GetAccessRules(True, True, GetType(SecurityIdentifier))
    			For Each rule As FileSystemAccessRule In accessRules
    				If (permission And rule.FileSystemRights) <> permission Then
    					Continue
    				End If
    				If rule.AccessControlType = AccessControlType.Allow Then
    					allow = True
    ElseIf rule.AccessControlType = AccessControlType.Deny Then
    					deny = True
    				End If
    			Next
    			Return allow AndAlso Not deny
    		Catch generatedExceptionName As UnauthorizedAccessException
    			Return False
    		End Try
    	End Function
    End Class
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    If FileHelper.HasPermissionOnFile(cheminDuFichier, FileSystemRights.Read) Then
    ...

  3. #3
    Membre actif
    Inscrit en
    Janvier 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 39
    Par défaut
    c'est quoi le var

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim allow As var = False
    Dim deny As var = False
    Dim accessControlList As var = fileSecurityFactory(path)

  4. #4
    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
    Par défaut
    Citation Envoyé par vbnet3 Voir le message
    c'est quoi le var

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim allow As var = False
    Dim deny As var = False
    Dim accessControlList As var = fileSecurityFactory(path)
    Oups, c'est un coup du convertisseur C#/VB.NET... il connait pas C# 3

    Voilà la même chose avec des types explicites, ce sera plus clair de toutes façons...

    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
    Imports System.Security.Principal
    Imports System.Security.AccessControl
    Public Shared Class FileHelper
    	Public Shared Function HasPermissionOnDirectory(ByVal path As String, ByVal permission As FileSystemRights) As Boolean
    		Return HasPermission(path, permission, Directory.GetAccessControl)
    	End Function
    	Public Shared Function HasPermissionOnFile(ByVal path As String, ByVal permission As FileSystemRights) As Boolean
    		Return HasPermission(path, permission, File.GetAccessControl)
    	End Function
    	Private Shared Function HasPermission(ByVal path As String, ByVal permission As FileSystemRights, ByVal fileSecurityFactory As Func(Of String, FileSystemSecurity)) As Boolean
    		Try
    			Dim allow As Boolean = False
    			Dim deny As Boolean = False
    			Dim accessControlList As FileSystemSecurity = fileSecurityFactory(path)
    			Dim accessRules As AuthorizationRuleCollection = accessControlList.GetAccessRules(True, True, GetType(SecurityIdentifier))
    			For Each rule As FileSystemAccessRule In accessRules
    				If (permission And rule.FileSystemRights) <> permission Then
    					Continue
    				End If
    				If rule.AccessControlType = AccessControlType.Allow Then
    					allow = True
    ElseIf rule.AccessControlType = AccessControlType.Deny Then
    					deny = True
    				End If
    			Next
    			Return allow AndAlso Not deny
    		Catch generatedExceptionName As UnauthorizedAccessException
    			Return False
    		End Try
    	End Function
    End Class

  5. #5
    Membre éclairé Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Par défaut
    je suis entrain de tester cette classe et j'ai des erreurs que je ne comprend pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public Shared Function HasPermissionOnDirectory(ByVal path As String, ByVal permission As FileSystemRights) As Boolean
    		Return HasPermission(path, permission, Directory.GetAccessControl)
    	End Function
    	Public Shared Function HasPermissionOnFile(ByVal path As String, ByVal permission As FileSystemRights) As Boolean
    		Return HasPermission(path, permission, File.GetAccessControl(Path))
    	End Function
    L'erreur est sur le GetAccessControl :
    La résolution de surcharge a échoué, car aucun GetAccessControl' accessible n'accepte ce nombre d'arguments
    Comment avez vous résolu le problème?
    Merci

  6. #6
    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
    Par défaut
    Bon, décidément ça m'apprendra à utiliser un convertisseur tout pourri sans vérifier le résultat

    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
    Public Class FileHelper
    	Public Shared Function HasPermissionOnDirectory(ByVal path As String, ByVal permission As FileSystemRights) As Boolean
    		Return HasPermission(path, permission, AddressOf Directory.GetAccessControl)
    	End Function
    	Public Shared Function HasPermissionOnFile(ByVal path As String, ByVal permission As FileSystemRights) As Boolean
    		Return HasPermission(path, permission, AddressOf File.GetAccessControl)
    	End Function
    	Private Shared Function HasPermission(ByVal path As String, ByVal permission As FileSystemRights, ByVal fileSecurityFactory As Func(Of String, FileSystemSecurity)) As Boolean
    		Try
    			Dim allow As Boolean = False
    			Dim deny As Boolean = False
    			Dim accessControlList As FileSystemSecurity = fileSecurityFactory(path)
    			Dim accessRules As AuthorizationRuleCollection = accessControlList.GetAccessRules(True, True, GetType(SecurityIdentifier))
    			For Each rule As FileSystemAccessRule In accessRules
    				If (permission And rule.FileSystemRights) <> permission Then
    					Continue For
    				End If
    				If rule.AccessControlType = AccessControlType.Allow Then
    					allow = True
    ElseIf rule.AccessControlType = AccessControlType.Deny Then
    					deny = True
    				End If
    			Next
    			Return allow AndAlso Not deny
    		Catch ex As UnauthorizedAccessException
    			Return False
    		End Try
    	End Function
    End Class
    Cette fois c'est testé et ça marche

Discussions similaires

  1. Test de validité sur un fichier
    Par juliotte dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/04/2007, 15h46
  2. Réponses: 4
    Dernier message: 05/01/2007, 18h06
  3. problème d'accés sur des fichiers partagés
    Par prefna dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 06/08/2006, 16h05
  4. [VB.net] donner droits d'acces sur des fichiers
    Par pikho dans le forum ASP.NET
    Réponses: 4
    Dernier message: 06/06/2006, 09h33
  5. Droits d'accès sur les fichiers
    Par billbocquet dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 11/01/2006, 11h24

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