#!perl #(...) use Win32::TieRegistry ( Delimiter=>"/" ); #(...) sub Crea_dsn ################################################## { my $ip = shift; my $dbq= shift; my $nuovo_dsn= shift; my $descrizione="DB utente "; unless( $registry_remoto = $Registry->Connect( "$ip", "LMachine" )){return "Errore connessione registry remoto: $^E"} my $odbc_ini = $registry_remoto->{"Software/ODBC/ODBC.INI"}||return "$^E"; my $odbc_data_sources= $odbc_ini->{"ODBC Data Sources"}||return "$^E"; foreach my $dsn(sort keys %{$odbc_data_sources}) { $dsn=~s/\///; $dsn eq $nuovo_dsn ? return "$nuovo_dsn gia\' in uso\n" :next; } $odbc_data_sources->{$nuovo_dsn} = "Microsoft Access Driver (*.mdb)"||return "$^E"; $odbc_ini->{$nuovo_dsn}={'DBQ'=>$dbq, 'Description'=>$descrizione, 'Driver'=>'C:\WINNT\System32\odbcjt32.dll', 'DriverID'=>['0x00000019','REG_DWORD'], 'FIL'=>'MS Access;', 'SafeTransactions'=>['0x00000000','REG_DWORD'], 'UID'=>'', 'Engines'=>{ 'Jet'=>{'ImplicitCommitSync'=>'', 'MaxBufferSize'=>['0x00000800','REG_DWORD'], #(hex(800)) da 2048 'PageTimeout'=>['0x00000005','REG_DWORD'], 'Threads'=>['0x00000003','REG_DWORD'], 'UserCommitSync'=>'yes' } } }||return "$^E"; return ("creato DSN: $nuovo_dsn su $dbq"); }