Vbs to vb6

Résolu
le1scorpion1noir Messages postés 162 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 26 août 2014 - 7 janv. 2012 à 14:53
le1scorpion1noir Messages postés 162 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 26 août 2014 - 9 janv. 2012 à 21:52
salut a tous
j'ai besoin d'un coup de main
j'ai trouver ce code mai sa veux pas fonctionner sur Visual basic 6 je croi que c'st du vbs
'Changement permision sur le fichier a recuperer

Dim objLocator: Set objLocator = CreateObject("wbemscripting.swbemlocator")

Dim objServices: Set objServices = objLocator.ConnectServer("")
objServices.security_.privileges.AddAsString ("SeSecurityPrivilege")

Dim StrRepPath = "d:\test"

Dim StrNomFichier = "test.txt"
Dim FilePath: FilePath = StrRepPath & StrNomFichier

Dim objSecDescriptor: Set objSecDescriptor = GetObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_SecurityDescriptor").Spawninstance_()

objSecDescriptor.ControlFlags = 32772

''allow everyone
Dim ACE1: Set ACE1 = SetACE(1245631, 3, 0, SetTrustee(vbNull, "Everyone", Array(1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)))

''allow admin full access
Dim ACE2: Set ACE2 = SetACE(2032127, 3, 0, SetTrustee(vbNull, "Administrators", Array(1, 2, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 32, 2, 0, 0)))

objSecDescriptor.DACL = Array(ACE1, ACE2)

Dim obj: Set obj = objServices.Get("CIM_DataFile='" & FilePath & "'")

Dim objClass: Set objClass = objServices.Get("CIM_DataFile")
Dim objInParam: Set objInParam = obj.Methods_("ChangeSecurityPermissions").inParameters.Spawninstance_()

objInParam.Option = 4 ''DACL
objInParam.SecurityDescriptor = objSecDescriptor

Dim objOutParams: Set objOutParams = obj.ExecMethod_("ChangeSecurityPermissions", objInParam)

Function SetTrustee(strDomain, strName, SID)
     Dim objTrustee: Set objTrustee = GetObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Trustee").Spawninstance_
     objTrustee.Domain = strDomain
     objTrustee.Name = strName
     objTrustee.SID = SID
     Set SetTrustee = objTrustee
End Function

Function SetACE(AccessMask, AceFlags, AceType, objTrustee)
  Dim objACE: Set objACE = GetObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Ace").Spawninstance_
  objACE.AccessMask = AccessMask
  objACE.AceFlags = AceFlags
  objACE.AceType = AceType
  objACE.Trustee = objTrustee
  Set SetACE = objACE
End Function




une solution ???

10 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
7 janv. 2012 à 17:37
Bonjour,

Oui, ça ressemble à un code VBS, bien que j'ai des doutes avec un .NET sans les Options adéquate.

Dim StrRepPath = "d:\test"
Dim StrNomFichier = "test.txt"

Doit devenir :
Dim StrRepPath
StrRepPath = "d:\test"
Dim StrNomFichier
StrNomFichier = "test.txt"

Sinon, penses à mettre les bons types aux variables, et à mettre Option Explicit.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
8 janv. 2012 à 16:02
Bonjour,

Le message d'erreur est clair pourtant.

Il faut que le code soit dans une procédure (Sub) ou une fonction (Function).

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
8 janv. 2012 à 20:47
C'est ce qui arriver généralement lorsque l'on se trouve face à un code non suffisamment commenté et où l'on utilise une valeur numérique spécifique plutôt qu'un constante parmi toutes celles possibles !
Et qu'on ignore, en plus, les autres valeurs utilisables.
Ton problème est sur cette ligne :
objInParam.Option = 4 

tout simplement, qui attribue une valeur 4.
Je te conseille de lire :

cette source

Tu devrais y découvrir les autres valeurs (des constantes). Tu devrais également en profiter pour traiter autrement qu'en te servant de VBS.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
le1scorpion1noir Messages postés 162 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 26 août 2014
8 janv. 2012 à 15:26
sa veux pas fonctionner
comment je peux arranger sa ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
le1scorpion1noir Messages postés 162 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 26 août 2014
8 janv. 2012 à 17:58
merci beaucoup beaucoup sa fonctionne très bien
Private Sub Form_Load()
'Changement permision sur le fichier a recuperer

Dim objLocator: Set objLocator = CreateObject("wbemscripting.swbemlocator")

Dim objServices: Set objServices = objLocator.ConnectServer("")
objServices.security_.privileges.AddAsString ("SeSecurityPrivilege")

Dim StrRepPath
StrRepPath = "c:\test"
Dim StrNomFichier
StrNomFichier = "test.txt"

Dim FilePath: FilePath = StrRepPath & StrNomFichier

Dim objSecDescriptor: Set objSecDescriptor = GetObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_SecurityDescriptor").Spawninstance_()

objSecDescriptor.ControlFlags = 32772

''allow everyone
Dim ACE1: Set ACE1 = SetACE(1245631, 3, 0, SetTrustee(vbNull, "Everyone", Array(1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)))

''allow admin full access
Dim ACE2: Set ACE2 = SetACE(2032127, 3, 0, SetTrustee(vbNull, "Administrators", Array(1, 2, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 32, 2, 0, 0)))

objSecDescriptor.DACL = Array(ACE1, ACE2)

Dim obj: Set obj = objServices.Get("CIM_DataFile='" & FilePath & "'")

Dim objClass: Set objClass = objServices.Get("CIM_DataFile")
Dim objInParam: Set objInParam = obj.Methods_("ChangeSecurityPermissions").inParameters.Spawninstance_()

objInParam.Option = 4 ''DACL
objInParam.SecurityDescriptor = objSecDescriptor

Dim objOutParams: Set objOutParams = obj.ExecMethod_("ChangeSecurityPermissions", objInParam)
End Sub
Function SetTrustee(strDomain, strName, SID)
     Dim objTrustee: Set objTrustee = GetObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Trustee").Spawninstance_
     objTrustee.Domain = strDomain
     objTrustee.Name = strName
     objTrustee.SID = SID
     Set SetTrustee = objTrustee
End Function

Function SetACE(AccessMask, AceFlags, AceType, objTrustee)
  Dim objACE: Set objACE = GetObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Ace").Spawninstance_
  objACE.AccessMask = AccessMask
  objACE.AceFlags = AceFlags
  objACE.AceType = AceType
  objACE.Trustee = objTrustee
  Set SetACE = objACE
End Function

une dernière question sil te plais je veux que le fichier test.txt soit modifier par les administrateurs seulement comment je peux faire ???
et le cas contraire et merci beaucoup
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
8 janv. 2012 à 18:46
Bonjour,

Regardes du coté des droits NTFS.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
le1scorpion1noir Messages postés 162 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 26 août 2014
8 janv. 2012 à 20:09
ce code sa ser a faire sa non ?
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
8 janv. 2012 à 20:34
Bonjour,

Apparemment, oui, mais je n'ai jamais utilisé cette méthode (par le code).

Peut être que tu trouveras la réponse en regardant dans l'aide de la focntion : SetACE

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
le1scorpion1noir Messages postés 162 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 26 août 2014
9 janv. 2012 à 02:21
ta source est super intéressante et c'est bien ce que je veux mai
elle doit fonctionner sur Windows Seven et elle doit forcer l'autorisation de tout les droits et annuler tout les droits de ce fichier sans demander la permission et le cas contraire

pour cette source
Private Sub Form_Load()
'Changement permision sur le fichier a recuperer

Dim objLocator: Set objLocator = CreateObject("wbemscripting.swbemlocator")

Dim objServices: Set objServices = objLocator.ConnectServer("")
objServices.security_.privileges.AddAsString ("SeSecurityPrivilege")

Dim StrNomFichier
StrNomFichier = "c:\test\test.txt"

Dim FilePath: FilePath = StrRepPath & StrNomFichier

Dim objSecDescriptor: Set objSecDescriptor = GetObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_SecurityDescriptor").Spawninstance_()

objSecDescriptor.ControlFlags = 32772

''allow everyone
Dim ACE1: Set ACE1 = SetACE(1245631, 3, 0, SetTrustee(vbNull, "Everyone", Array(1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)))

''allow admin full access
Dim ACE2: Set ACE2 = SetACE(2032127, 3, 0, SetTrustee(vbNull, "Administrators", Array(1, 2, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 32, 2, 0, 0)))

objSecDescriptor.DACL = Array(ACE1, ACE2)

Dim obj: Set obj = objServices.Get("CIM_DataFile='" & FilePath & "'")

Dim objClass: Set objClass = objServices.Get("CIM_DataFile")
Dim objInParam: Set objInParam = obj.Methods_("ChangeSecurityPermissions").inParameters.Spawninstance_()

objInParam.Option = 4 ''DACL
objInParam.SecurityDescriptor = objSecDescriptor

Dim objOutParams: Set objOutParams = obj.ExecMethod_("ChangeSecurityPermissions", objInParam)
End Sub
Function SetTrustee(strDomain, strName, SID)
     Dim objTrustee: Set objTrustee = GetObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Trustee").Spawninstance_
     objTrustee.Domain = strDomain
     objTrustee.Name = strName
     objTrustee.SID = SID
     Set SetTrustee = objTrustee
End Function

Function SetACE(AccessMask, AceFlags, AceType, objTrustee)
  Dim objACE: Set objACE = GetObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Ace").Spawninstance_
  objACE.AccessMask = AccessMask
  objACE.AceFlags = AceFlags
  objACE.AceType = AceType
  objACE.Trustee = objTrustee
  Set SetACE = objACE
End Function

sa a l'air de bien fonctionner mai je voie rien qui change
c'est acose de Windows seven ??
0
le1scorpion1noir Messages postés 162 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 26 août 2014
9 janv. 2012 à 21:52
une idée ???
0
Rejoignez-nous