VBS : erreur d'initialisation Win32_LogicalFileSecuritySetting

Résolu
opsi1985 Messages postés 15 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 29 septembre 2007 - 27 févr. 2007 à 18:10
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 28 févr. 2007 à 13:37
Bonjour,
J'espere que je suis dans le bon theme ....
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 :

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

Set objFileSecuritySettings = objWMIService.Get("Win32_LogicalFileSecuritySetting='" & path_du_fichier & "'")

<!-- END TEMPLATE: bbcode_code -->

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

4 réponses

opsi1985 Messages postés 15 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 29 septembre 2007
28 févr. 2007 à 13:25
Bon, je ne sais pas quelles modifications a permis d'éviter l'erreur donc je préfere vous donnez la fonction en entier et qui semble fonctionner avec tous les noms de fichiers :

    '***************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

Merci à tous!!
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
27 févr. 2007 à 18:22
Puisque ton nom de fichier contient une apostrophe, essaye de l'encadrer avec des "
Et pour mettre des " dans une chaine de caractères, il faut les doubler

Donc essaye avec ceci :
Set objFileSecuritySettings objWMIService.Get( " Win32_LogicalFileSecuritySetting""" & path_du_fichier & """")

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
27 févr. 2007 à 20:31
 Bonsoir,

Une autre solution serait d'utiliser le nom dos du fichier.

filespec = "D:\Mes_scripts_VBFrance\Test\Copie  ' de mail_dest ' ' inataires.txt"
msgbox ShowShortName(filespec)
Function ShowShortName(filespec)
   Dim fso, f, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFile(filespec)
   s = "Le nom abrégé de "   & UCase(f.Name) & "
"
   s = s & "est : " & f.ShortName
   ShowShortName = s
End Function

jean-marc
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
28 févr. 2007 à 13:37
 Bonjour à tous

Bonjour opsi1985 ,

c'est ok avec un fichier comprenant des espaces, mais ko s'il y a des ' dans ce nom.

jean-marc
0
Rejoignez-nous