[VB6] Problème Gestion d'erreur
Korangar
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
toto -
toto -
Bonjour,
Le but du script est de récupérer les comptes administrateurs des machines d'un domaine dans un fichier texte.
J'ai récupéré la majeur partie du code source sur le site de microsoft, cependant il ne gère pas deux problèmes concernant la récupération à savoir "Erreur 70: Accès refusé" et "Erreur -2147024843: Chemin Réseau introuvable".
J'ai tenté de gérer l'erreur de cette façon, mais lors de l'execution le "On Error Go To Erreur" est ignoré. Lors de l'execution manuelle, si je reviens sur la condition "If Err.Number <> 70 And Err.Number <> -2147024843 Then", le bloc est bien ignoré.
J'utilise VB6 SP6
Serait il possible d'avoir de l'aide sur ce problème ?
Merci d'avance.
Le but du script est de récupérer les comptes administrateurs des machines d'un domaine dans un fichier texte.
J'ai récupéré la majeur partie du code source sur le site de microsoft, cependant il ne gère pas deux problèmes concernant la récupération à savoir "Erreur 70: Accès refusé" et "Erreur -2147024843: Chemin Réseau introuvable".
J'ai tenté de gérer l'erreur de cette façon, mais lors de l'execution le "On Error Go To Erreur" est ignoré. Lors de l'execution manuelle, si je reviens sur la condition "If Err.Number <> 70 And Err.Number <> -2147024843 Then", le bloc est bien ignoré.
J'utilise VB6 SP6
Serait il possible d'avoir de l'aide sur ce problème ?
Merci d'avance.
Private Sub recuperation_Click() Open "C:\sauvegarde.txt" For Append As #1 Const ADS_SCOPE_SUBTREE = 2 Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection objCommand.CommandText = _ "Select Name, Location from 'LDAP://DC=mondomaine,DC=com' " _ & "Where objectClass='computer'" objCommand.Properties("Page Size") = 1000 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE Set objRecordSet = objCommand.Execute objRecordSet.MoveFirst Do Until objRecordSet.EOF strComputer = objRecordSet.Fields("Name").Value strGroup = "Administrateurs" resultat = resultat & objRecordSet.Fields("Name").Value & ";" Erreur: Err.Clear If Err.Number <> 70 And Err.Number <> -2147024843 Then On Error GoTo Erreur Set objGroup = GetObject("WinNT://" & strComputer & "/" & strGroup & ",group") For Each objMember In objGroup.Members resultat = resultat & objMember.Name & ";" Next End If Print #1, resultat resultat = "" objRecordSet.MoveNext Loop resultat.Caption = "Récupération Terminée" Close End Sub
A voir également:
- [VB6] Problème Gestion d'erreur
- Vb6 - Télécharger - Divers Utilitaires
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Logiciel gestion photo gratuit - Guide
- Logiciel gestion cabinet médical gratuit - Télécharger - Organisation
- Logiciel gestion cave à vin gratuit excel - Télécharger - Cuisine & Gastronomie
3 réponses
Bonjour,
Je me permets de vous relancer car ce problème m'enquiquine et que je n'ai toujours pas trouvé de réponse.
Merci d'avance
Je me permets de vous relancer car ce problème m'enquiquine et que je n'ai toujours pas trouvé de réponse.
Merci d'avance
OOOPS ! moi aussi j'ai mis mon Erreur: et son traitement au mauvais endroit. Ils devraient être à la fin du sub, après un exit sub pour éviter leur exécution quand il n'y a pas d'erreur
Bonjour
If Err.Number <> 70 And Err.Number <> -2147024843 Then
Ce test est inutile : il est toujours vrai après un Err.clear
Ton traitement d'erreur n'est pas conventionnel. Normalement, chaque appel à On Error goto ne doit être exécuté qu'une fois, ou 'refermé' par un appel à On Error goto 0, et le traitement correspondant au cas d'erreur se trouver dans un bloc séparé.
( pas testé)
If Err.Number <> 70 And Err.Number <> -2147024843 Then
Ce test est inutile : il est toujours vrai après un Err.clear
Ton traitement d'erreur n'est pas conventionnel. Normalement, chaque appel à On Error goto ne doit être exécuté qu'une fois, ou 'refermé' par un appel à On Error goto 0, et le traitement correspondant au cas d'erreur se trouver dans un bloc séparé.
( pas testé)
... Err.Clear Do Until objRecordSet.EOF strComputer = objRecordSet.Fields("Name").Value strGroup = "Administrateurs" resultat = resultat & objRecordSet.Fields("Name").Value & ";" On Error GoTo Erreur Set objGroup = GetObject("WinNT://" & strComputer & "/" & strGroup & ",group") On Error goto 0 For Each objMember In objGroup.Members resultat = resultat & objMember.Name & ";" Next End If Print #1, resultat Suite: resultat = "" objRecordSet.MoveNext Erreur: If Err.Number = 70 OR Err.Number = -2147024843 Then resume Suite ' erreurs attendues Msgbox "Erreur " & Err.Number & " : " & Err.Description 'erreurs innattendues End Loop resultat.Caption = "Récupération Terminée"