philheiz
Messages postés117Date d'inscriptionmercredi 3 décembre 2003StatutMembreDernière intervention11 octobre 20071 3 déc. 2007 à 16:43
tu bosses au boulot ou à la maison ?
dans un réseau d'entreprise, il arrive souvent que l'admin restreigne le droit d'écriture dans HKEY_LOCAL_MACHINE.
En général, je conseille de toute facon les DSN utilisateur qui se définissent de la manière décrite en haut, à la différence que l'on utilise HKEY_CURRENT_USER (qui n'est pas protégé).
cs_Jordel
Messages postés27Date d'inscriptionvendredi 1 février 2002StatutMembreDernière intervention14 décembre 2007 30 nov. 2007 à 10:54
Par contre, je me fais insulter lors de l'exécution au niveau de "lResult = RegCreateKey(HKEY_XX, REG_ODBCINI & DataSourceName, hKeyHandle)"
VB me sort une AccessViolationException : "Tentative de lecture ou d'écriture de mémoire protégée. Cela indique souvent qu'une autre mémoire est endommagée."
Avez-vous une idée du problème ???
cs_amydale
Messages postés16Date d'inscriptionjeudi 3 juin 2004StatutMembreDernière intervention 4 janvier 2012 10 sept. 2007 à 22:59
Salut,
super intéressant !! merci !
cs_dchrist
Messages postés39Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention21 mai 2015 4 janv. 2007 à 14:22
Salut,
Ton code est intéressant et les commentaires également.
Il va me résoudre un problème sur la main-basse sur ODBC par des utilisateurs, ce que je ne veux pas. En créant au début de mon prog mes ODBC et en les supprimant avec RegDeleteKey, je n'ai plus à me soucier du lien ODBC mal créé.
Merci tout plein...
zen69
Messages postés584Date d'inscriptionjeudi 28 décembre 2006StatutMembreDernière intervention29 avril 20101 19 déc. 2006 à 17:03
comment faire pour lister toutes les proprietes dun ODBC system ?
FENETRES
Messages postés196Date d'inscriptionjeudi 15 juillet 2004StatutMembreDernière intervention14 avril 2009 11 avril 2006 à 11:45
FENETRES
Messages postés196Date d'inscriptionjeudi 15 juillet 2004StatutMembreDernière intervention14 avril 2009 10 avril 2006 à 17:31
Code tout à fait correct mais fonctionnellemnt incomplet.
Au minimum, il faudrait vérifier l'existence du pilote SQL et éventuellement sa version sur le poste client.
Exemple pour SQL Server :
'Pilote SQL Server
If RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\ODBC\ODBCINST.INI\SQL server", 0, KEY_ALL_ACCESS, hKey) = 0 Then
regValue = String$(1024, 0)
If RegQueryValueEx(hKey, "Driver", 0, valueType, regValue, Len(regValue)) = 0 Then
If valueType = REG_SZ Then
'Récupère l'emplacement de la dll
RegVal(0) = Left$(regValue, InStr(regValue, vbNullChar) - 1)
'Récupère le n° de version du pilote SQL Server
RegVal(0) = GetFileVersion(RegVal(0))
End If
End If
RegCloseKey hKey
End If
exterminatix
Messages postés10Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention 4 novembre 2010 3 févr. 2006 à 12:27
Bonjour je tiens à m'excuser au sujet de ma remarque pour deux raisons :
1) Mon code me parait plus léger, mais c'est vrai que certain anti-virus le bloque.(Merci pour le renseignement), par contre il peut fonctionner dans un vb compilé (à condition de se mettre en explicit off)
2) C'est vrai que l'on n'enregistre pas le mot de passe dans le dsn. (On peut le renter en saisie manuel juste pour le test) Je n'aurais jamais du faire cette erreur car j'utilise depuis de nombreuses années des odbc et je sais très bien que l'on passe toujours le mot de passe en paramètres lorsqu'on l'appelle.
Cordialement votre.
philheiz
Messages postés117Date d'inscriptionmercredi 3 décembre 2003StatutMembreDernière intervention11 octobre 20071 21 janv. 2006 à 17:00
pour autant que je saches, tu ne peux pas enregistrer le mot de passe dans la définition.
pour ce qui est de la 'lourdeur', tu ne peux pas comparer la méthode utilisant l'API (qui à mon sens est plus propre) à celle qui se sert de l'objet Script.
ce que tu proposes est bien pour un scripte vbs, mais pas dans une appli compilée: une fois sur deux Norton ou d'autres anti-virus réajissent à la commande RegWrite et la bloquent.
exterminatix
Messages postés10Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention 4 novembre 2010 20 janv. 2006 à 14:29
C'est bien et un peu lourd. On peut faire comme le code suivant. Mais le probleme c'est comment fait-on pour saisir le mot de passe ?
3 déc. 2007 à 16:43
dans un réseau d'entreprise, il arrive souvent que l'admin restreigne le droit d'écriture dans HKEY_LOCAL_MACHINE.
En général, je conseille de toute facon les DSN utilisateur qui se définissent de la manière décrite en haut, à la différence que l'on utilise HKEY_CURRENT_USER (qui n'est pas protégé).
30 nov. 2007 à 10:54
Par contre, je me fais insulter lors de l'exécution au niveau de "lResult = RegCreateKey(HKEY_XX, REG_ODBCINI & DataSourceName, hKeyHandle)"
VB me sort une AccessViolationException : "Tentative de lecture ou d'écriture de mémoire protégée. Cela indique souvent qu'une autre mémoire est endommagée."
Avez-vous une idée du problème ???
10 sept. 2007 à 22:59
super intéressant !! merci !
4 janv. 2007 à 14:22
Ton code est intéressant et les commentaires également.
Il va me résoudre un problème sur la main-basse sur ODBC par des utilisateurs, ce que je ne veux pas. En créant au début de mon prog mes ODBC et en les supprimant avec RegDeleteKey, je n'ai plus à me soucier du lien ODBC mal créé.
Merci tout plein...
19 déc. 2006 à 17:03
11 avril 2006 à 11:45
http://support.microsoft.com/kb/171146/EN-US/
10 avril 2006 à 17:31
Au minimum, il faudrait vérifier l'existence du pilote SQL et éventuellement sa version sur le poste client.
Exemple pour SQL Server :
'Pilote SQL Server
If RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\ODBC\ODBCINST.INI\SQL server", 0, KEY_ALL_ACCESS, hKey) = 0 Then
regValue = String$(1024, 0)
If RegQueryValueEx(hKey, "Driver", 0, valueType, regValue, Len(regValue)) = 0 Then
If valueType = REG_SZ Then
'Récupère l'emplacement de la dll
RegVal(0) = Left$(regValue, InStr(regValue, vbNullChar) - 1)
'Récupère le n° de version du pilote SQL Server
RegVal(0) = GetFileVersion(RegVal(0))
End If
End If
RegCloseKey hKey
End If
3 févr. 2006 à 12:27
1) Mon code me parait plus léger, mais c'est vrai que certain anti-virus le bloque.(Merci pour le renseignement), par contre il peut fonctionner dans un vb compilé (à condition de se mettre en explicit off)
2) C'est vrai que l'on n'enregistre pas le mot de passe dans le dsn. (On peut le renter en saisie manuel juste pour le test) Je n'aurais jamais du faire cette erreur car j'utilise depuis de nombreuses années des odbc et je sais très bien que l'on passe toujours le mot de passe en paramètres lorsqu'on l'appelle.
Cordialement votre.
21 janv. 2006 à 17:00
pour ce qui est de la 'lourdeur', tu ne peux pas comparer la méthode utilisant l'API (qui à mon sens est plus propre) à celle qui se sert de l'objet Script.
ce que tu proposes est bien pour un scripte vbs, mais pas dans une appli compilée: une fois sur deux Norton ou d'autres anti-virus réajissent à la commande RegWrite et la bloquent.
20 janv. 2006 à 14:29
Sub Set_ODBC_DSN(UserDSN , DataSourceName , DatabaseName , Description, DriverPath ,DriverName ,Server )
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
localisation = "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI"
if (UserDSN) then localisation = "HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI"
'restauration odbc
WshShell.RegWrite localisation & "ODBC Data Sources" & DataSourceName,DriverName
WshShell.RegWrite localisation & DataSourceName & "\Driver",DriverPath
WshShell.RegWrite localisation & DataSourceName & "\Server",Server
WshShell.RegWrite localisation & DataSourceName & "\Description",Description
WshShell.RegWrite localisation & DataSourceName & "\Database",DatabaseName
WshShell.RegWrite localisation & DataSourceName & "\LastUser","user"
end sub