로컬 컴퓨터에서 개발 중인 소프트웨어를 테스트하려고 하니, ODBC 설정을 자동으로 해줘야 해서 작성한 VB 스크립트다. 사실 거의 다 Understanding ODBC DSN creation에서 가져온 코드이고, 데이터 소스 이름과 데이터베이스 이름을 명령줄 인자로 넘겨받게 고쳤을 뿐이다.
현재 로컬 컴퓨터엔 Sql Server 2005 Express Edition이 깔려 있기 때문에 ODBC 드라이버를 SQL Native Client으로 설정해놓았고, Windows 인증으로 로그인하게 만들어놨다. 하드 코딩되어 있는 부분이 많다.
Option Explicit 'Constants Const HKEY_CLASSES_ROOT = &H80000000 Const HKEY_CURRENT_USER = &H80000001 Const HKEY_LOCAL_MACHINE = &H80000002 Const HKEY_USERS = &H80000003 Const HKEY_CURRENT_CONFIG = &H80000005 'Variables 'On Error resume next Dim Arg Dim DataSourceName Dim DatabaseName Dim Description Dim DriverPath Dim LastUser Dim Server Dim Trusted_connection Dim DriverName Dim sPath Dim sComputer 'Value assignment If WScript.Arguments.Count <> 2 Then WScript.Echo "USAGES: this.vbs DataSourceName, DatabaseName" WScript.Quit(0) Else DataSourceName = WScript.Arguments(0) DatabaseName = WScript.Arguments(1) If DataSourceName = "" Or DatabaseName = "" Then WScript.Echo "USAGES: this.vbs DataSourceName, DatabaseName" WScript.Quit(0) End If WScript.Echo "DataSourceName: " & DataSourceName WScript.Echo "DatabaseName: " & DatabaseName End If DriverPath = "C:\WINNT\System32\sqlncli.dll" LastUser="sa" Server="localhost" Trusted_connection="Yes" Description="ODBC DSN for the Database:" & DatabaseName DriverName="SQL Native Client" sPath = "SOFTWARE\ODBC\ODBC.INI\" & DataSourceName sComputer = "." 'Read and loop through the input file If (0 = CreateRegKey(sComputer, HKEY_LOCAL_MACHINE, sPath)) Then SetRegKeyStrValue sComputer, HKEY_LOCAL_MACHINE, sPath, "Database", DatabaseName SetRegKeyStrValue sComputer, HKEY_LOCAL_MACHINE, sPath, "Description", Description SetRegKeyStrValue sComputer, HKEY_LOCAL_MACHINE, sPath, "Driver", DriverPath SetRegKeyStrValue sComputer, HKEY_LOCAL_MACHINE, sPath, "LastUser",LastUser SetRegKeyStrValue sComputer, HKEY_LOCAL_MACHINE, sPath, "Server",Server SetRegKeyStrValue sComputer, HKEY_LOCAL_MACHINE, sPath, "Trusted_Connection",Trusted_connection 'Write in "ODBC Data Sources" Key to allow ODBC Manager list & manage the new DSN SetRegKeyStrValue sComputer, HKEY_LOCAL_MACHINE, "SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources", DataSourceName , DriverName ' MsgBox (sComputer & " DONE!") Else ' MsgBox (sComputer & " Failed!") End If WScript.Quit(0) 'Create RegKey Function Function CreateRegKey (sComputer, hTree, sKey) Dim oRegistry Dim lResult Set oRegistry = GetObject("winmgmts:{impersonationLevel=impersonate}//" & sComputer & "/root/default:StdRegProv") lResult = oRegistry.CreateKey(hTree, sPath) If (lResult = 0) And (Err.Number = 0) Then CreateRegKey = 0 Else CreateRegKey = 1 msgbox("Create Key " & sKey & " Failed") End If Set oRegistry = Nothing End Function 'set RegKey Function Function SetRegKeyStrValue (sComputer, hTree, sKey, sValueName, sValue) Dim oRegistry Dim lResult Set oRegistry = GetObject("winmgmts:{impersonationLevel=impersonate}//" _ & sComputer & "/root/default:StdRegProv") lResult = oRegistry.SetStringValue(hTree, sKey, sValueName, sValue) If (lResult = 0) And (Err.Number = 0) Then SetRegKeyStrValue = 0 Else SetRegKeyStrValue = 1 msgbox("Set Value for " & sKey & " Failed") End If Set oRegistry = Nothing End Function
Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.