Seite 1 von 1

in Registry schreiben ( windows )

Verfasst: Mittwoch 28. Mai 2008, 08:39
von The Hit-Man
habe hier ein schönes beispiel gefunden, wie man in die registry einen schlüssel schreiben kann.
http://www.python-forum.de/topic-5453.h ... t=registry

jetzt kenne ich mich leider gar nicht mit schlüsseln aus. mein problem ist, ich muß eine odbc verbindung in der registry speichern. habe einfach mal einen eintrag in dem odbc manager angelgt und danach in der registry gesucht und auch gefunden. der schlüssel sieht wie folgt aus:

Code: Alles auswählen

Windows Registry Editor Version 5.00

[HKEY_USERS\S-1-5-21-1482476501-813497703-1202660629-1003\Software\ODBC\ODBC.INI\servatumSQL]
"Driver"="C:\\WINDOWS\\system32\\SQLSRV32.dll"
"Server"="thor"
"LastUser"="max"
"Description"="servatum"
und

Code: Alles auswählen

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources]
"servatumSQL"="SQL Server"
erstens dachte ich, das der schlüssel unter dem jeweiligen user zu finden ist, da ich ja eine odbc verbindung für einen user angelegt hatte. wie kann ich denn jetzt am besten, diese schlüssel, in die reg eintragen? hatte mir das beispiel ( link oben ) angeschaut. verstehe es aber nicht ganz, wie es mit meinem schlüssel funktionieren soll.

Verfasst: Mittwoch 28. Mai 2008, 09:00
von veers

Re: in Registry schreiben ( windows )

Verfasst: Mittwoch 28. Mai 2008, 09:04
von gerold
The Hit-Man hat geschrieben:erstens dachte ich, das der schlüssel unter dem jeweiligen user zu finden ist
Hallo The Hit-Man!

Für dich ist nur HKEY_CURRENT_USER relevant.

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

#[HKEY_CURRENT_USER\\Software\ODBC\ODBC.INI\servatumSQL]
#"Driver"="C:\\WINDOWS\\system32\\SQLSRV32.dll"
#"Server"="thor"
#"Description"="servatum" 

#[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources]
#"servatumSQL"="SQL Server"

import os
import _winreg as winreg

SQLSRV32 = os.path.join(os.environ["SystemRoot"], "system32", "SQLSRV32.dll")


def create_odbc_data_source(name, server, description = ""):
    
    key = winreg.CreateKey(
        winreg.HKEY_CURRENT_USER,
        "Software\\ODBC\\ODBC.INI\\%s" % name
    )
    winreg.SetValueEx(key, "Driver", None, winreg.REG_SZ, SQLSRV32)
    winreg.SetValueEx(key, "Server", None, winreg.REG_SZ, server)
    if description:
        winreg.SetValueEx(key, "Description", None, winreg.REG_SZ, description)
    winreg.CloseKey(key)
    
    key = winreg.CreateKey(
        winreg.HKEY_CURRENT_USER,
        "Software\\ODBC\\ODBC.INI\\ODBC Data Sources"
    )
    winreg.SetValueEx(key, name, None, winreg.REG_SZ, "SQL Server")
    winreg.CloseKey(key)
    

def main():
    # Testen
    create_odbc_data_source("mein_test", "localhost", "na seavas")


if __name__ == "__main__":
    main()
Ich habe allerdings nicht getestet, ob ODBC damit wirklich funktioniert.

mfg
Gerold
:-)

Verfasst: Mittwoch 28. Mai 2008, 09:05
von The Hit-Man
oh, vielen dank. hatte gerade mit nem kollegen gequatscht, der wußte auch nicht wie man das macht. werde ich sofort hier testen.

danke

EDIT:
link geht nicht.

Verfasst: Mittwoch 28. Mai 2008, 09:31
von audax
Tut er wohl :o

Verfasst: Donnerstag 29. Mai 2008, 09:03
von The Hit-Man
ja, jetzt ;)