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

VBScript Discussion :

VBS: Win32_LogicalFileSecuritySetting erreur d'initialisation


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 55
    Par défaut VBS: Win32_LogicalFileSecuritySetting erreur d'initialisation
    Bonjour,
    j'utilise cet objet(j'espere que c'est le nom correct ) pour récupérer le propriétaire du fichier passé en parametre de cette maniere. J'initialise donc Win32_LogicalFileSecuritySetting de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set objFileSecuritySettings = objWMIService.Get("Win32_LogicalFileSecuritySetting='" & path_du_fichier & "'")
    Tout fonctionne sauf lorsque j'utilise un nom de fichier contenant le caractère ' (apostrophe)... J'obtiens alors une erreur et mon script s'arrète

    Je pense également que l'erreur arrive avec d'autres caractère à la c...

    comment puis je pallier l'erreur ? parser le path du fichier pour remplacer ce type de caractères ? fonction magique qui va bien ?

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    bonjour,
    en doublant le caractère ' dans path_du_fichier peut-être ?
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  3. #3
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 55
    Par défaut
    Hello,
    Non le fait de doubler le caractère ne fonctionne pas mieux ....

  4. #4
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 55
    Par défaut
    Bon je ne sais pas exactement quelles sont les modifications que j'ai apportées qui ont pallier l'erreur tellement j'en ai fais mais la fonction semble marcher quelque soit le nom du fichier, voici donc la fonction en question :

    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
     
    '***************FONCTION DE RECUPERATION DU PROPRIETAIRE DU FICHIER**************
    Function getOwner(strFile)
    	Dim objWMIService
    	Dim objSD
    	Dim intRetVal
    	Dim objFileSecuritySettings
    	Set objWMIService = GetObject("winmgmts:")
    	Set objFileSecuritySettings = objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFile &"'")
    	intRetVal = objFileSecuritySettings.GetSecurityDescriptor(objSD)
    	If intRetVal = 0 Then
     
    	Else
    		wScript.Echo "Impossible de récupérer le descripteur de sécurité."
    	End If
    	getOwner = objSD.Owner.Name
    End Function
    Merci à tous

  5. #5
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 55
    Par défaut
    On m'a demandé de poster le code entier qui ne comprend pas uniquement le sujet du topic...
    le voici ;-)

    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
     
     
         '+-----------------------------------------------------------------------------------------+
         '+ Ce script utilise une fonction récursive pour parcourir l'ensemble des repertoires du   +
         '+ disque dur afin de déterminer l'ensemble des données suivante pour chaque fichier:		+	
         '+ - chemin 			  																	+
         '+	- taille																				+
    	 '+	- propriétaire																			+
    	 '+	- date de création 																		+
         '+	- date de modification																	+
         '+ By pierre xavier																		+
         '+-----------------------------------------------------------------------------------------+
     
         Option Explicit
     
         '********************************INITIALISATION****************************
         dim PathResultat 
         PathResultat = InputBox("Choissez le fichier de sortie:")
         Dim path_start
         Dim Myfso, result
         Set Myfso = CreateObject("Scripting.FileSystemObject")
     
         path_start = InputBox("Choisissez le repertoire de début de recherche (ne pas mettre de \ a la fin):")
     
     
     
    	'***************************LANCEMENT DE LA RECHERCHE****************************
         result = Find(path_start)
         wscript.echo "fin de la recherche"     
     
        '*********************fonction de recherche recursive********************
         Function Find (strPath)
         on error resume next
         Dim MyDir, MyFile, MySubDir
         Dim strResult
         Dim user, Path
    		 Set MyDir = Myfso.GetFolder(strPath)
    		 wscript.echo parsePath(strPath)
    		 For Each MyFile In MyDir.Files
    			 Path = parsePath(strPath &"\"& MyFile.Name)
    			 user = getOwner(Path)
    			 wscript.echo "fichier --> " & Path
    			 strResult  = strResult & "insert into states(chemin,nom,taille,owner,date_create,date_modif,GEN) values('"& parsePath(strPath) & "','" & MyFile.Name &"','"& MyFile.Size & "','"& user & "','" &MyFile.DateCreated&"','"&  MyFile.DatelastModified & "', (SELECT GEN_ID(GEN_STATES, 1) FROM RDB$DATABASE));"&vbCrLf
    		 Next
    		 Call WriteLineToFile(strResult,PathResultat)
    		 For Each MySubDir In MyDir.SubFolders
    				'appel récursif
    				strResult = strResult & Find(strPath & "\" & MySubDir.Name)
    		 Next
    		 Find = strResult
    	End Function
     
        '***************FONCTION DE RECUPERATION DU PROPRIETAIRE DU FICHIER**************
    	Function getOwner(strFile)
    		'on error resume next
    		Dim objWMIService
    		Dim objSD
    		Dim intRetVal
    		Dim objFileSecuritySettings
    		Set objWMIService = GetObject("winmgmts:")
    		Set objFileSecuritySettings = objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFile &"'")
    		intRetVal = objFileSecuritySettings.GetSecurityDescriptor(objSD)
    		If intRetVal = 0 Then
     
    		Else
    			wScript.Echo "Impossible de récupérer le descripteur de sécurité."
    		End If
    		getOwner = objSD.Owner.Name
    	End Function
     
     
    	'*****************FONCTION D'ECRITURE DANS UN FICHIER***************************   
    	Sub WriteLineToFile (str, path)
    	   Const ForReading = 1, ForWriting = 2 ,ForAppending = 8
    	   Dim fso, f
    	   Set fso = CreateObject("Scripting.FileSystemObject")
    	   Set f = fso.OpenTextFile(path, ForAppending, True)
    	   f.WriteLine str
    	End Sub
     
    	'********************Parse une string pour appliquer le bon format (suppression des //)******************
    	Function parsePath(str)
    	  parsePath = Replace(str,"\\", "\")
    	  parsePath = Replace(str,"\\\", "\")
          parsePath = Replace(str,"\\\\", "\")
     
    	end Function
    Have fun !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/12/2007, 16h38
  2. Erreur d'initialisation de requête - option RTF
    Par verticka dans le forum WinDev
    Réponses: 2
    Dernier message: 25/11/2005, 09h55
  3. [BDE Errors] Erreur d'initialisation
    Par SubZero2 dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/07/2005, 08h46
  4. Erreur d'initialisation du BDE sous Delphi7 ent et WinXP
    Par touhami dans le forum Bases de données
    Réponses: 1
    Dernier message: 15/02/2005, 01h51
  5. [Tomcat MySQL] Erreur d'initialisation d'un pool
    Par mmed dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 05/01/2005, 09h22

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