Vbs to vb6 [Résolu]

Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Dernière intervention
26 août 2014
- 7 janv. 2012 à 14:53 - Dernière réponse :
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
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 ???
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
14301
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
20 novembre 2018
7 janv. 2012 à 17:37
3
Merci
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

Merci NHenry 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de NHenry
Meilleure réponse
Messages postés
14301
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
20 novembre 2018
8 janv. 2012 à 16:02
3
Merci
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

Merci NHenry 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de NHenry
Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
8 janv. 2012 à 20:47
3
Merci
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

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Dernière intervention
26 août 2014
8 janv. 2012 à 15:26
0
Merci
sa veux pas fonctionner
comment je peux arranger sa ?
Commenter la réponse de le1scorpion1noir
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Dernière intervention
26 août 2014
8 janv. 2012 à 17:58
0
Merci
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
Commenter la réponse de le1scorpion1noir
Messages postés
14301
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
20 novembre 2018
8 janv. 2012 à 18:46
0
Merci
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
Commenter la réponse de NHenry
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Dernière intervention
26 août 2014
8 janv. 2012 à 20:09
0
Merci
ce code sa ser a faire sa non ?
Commenter la réponse de le1scorpion1noir
Messages postés
14301
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
20 novembre 2018
8 janv. 2012 à 20:34
0
Merci
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
Commenter la réponse de NHenry
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Dernière intervention
26 août 2014
9 janv. 2012 à 02:21
0
Merci
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 ??
Commenter la réponse de le1scorpion1noir
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Dernière intervention
26 août 2014
9 janv. 2012 à 21:52
0
Merci
une idée ???
Commenter la réponse de le1scorpion1noir

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.