[Articolo] Modificare il registro di sistema in Windows

Oggi parliamo del registro di Windows, e in quali modi è possibile modificarlo (con particolare attenzione agli script reg e batch).

Difficoltà articolo (0->10): 5

Oggi parliamo del registro di Windows, e in quali modi è possibile modificarlo (con particolare attenzione tramite gli script).

Da wikipedia, il registro di sistema “è una base di dati in cui sono custodite le opzioni e le impostazioni di un sistema operativo di tipo Microsoft Windows, e di tutte le applicazioni installate. Il concetto di registro di sistema è strettamente legato alla logica dei sistemi operativi Microsoft, che conservano tutte le proprie impostazioni in un numero ristretto di file.” Dunque, è quella porzione del sistema operativo in cui sono custodite tutte le impostazioni più importanti del sistema, e con le quali è fondamentale fare attenzione.

Vediamo adesso come possiamo apportare modifiche a tale registro, che possono essere manuali oppure automatiche, nel caso in cui usassimo degli script per automatizzare le operazioni.

Il caso più semplice è quando dobbiamo modificare una chiave di registro  o comunque un numero ridotto di chiavi. In tal caso possiamo farlo direttamente aprendo il registro con il comando REGEDIT. Per aprire l’editor premere i tasti WIN+R, che comporterà l’apertura di questa finestra:

Run, window, command, Windows, start, launch, open

Adesso, dobbiamo inserire il comando REGEDIT, e ci verrà mostrato il registro di sistema, all’interno del quale possiamo ricercare la chiave/chiavi di nostro interesse.

E’ anche possibile modificare le chiavi di registro usando il comando REG, richiamabile dal prompt dei comandi (CMD), e la sua sintassi è consultabile con “REG /?”.

Per modificare le chiavi di registro tramite script invece ci sono 2 modi:

  1. Script di tipo reg, con estensione .reg.
  2. Script batch, con estensione bat.

Uno script di tipo reg, è un file che ha estensione di sistema .reg, ed è un file testuale che deve contenere necessariamente chiavi di registro. Un particolarità che con un file .reg non possiamo cancellare singoli valori ma solo le chiavi, a differenza di un file batch.  Inoltre, con un file reg non riceveremo errore se qualcosa dovesse andare storto durante la sua esecuzione, mentre con un file batch ci verrà restituito sempre un errore in caso di qualche problema

Passando alla sintassi che deve avere un file reg, vediamo che è necessario mettere tra le quadre [] il percorso della posizione di registro da modificare e nella riga dopo il nome della chiave tra apici doppi, quindi il carattere uguale (=), il tipo di valore , il carattere dei due punti (:) , ed infine il valore della chiave. E’ un’eccezione il tipo stringa, per cui non è necessario specificare il tipo ed è invece sufficiente inserire tra apici doppi il valore stesso. Vediamo un elenco delle varie possibilità:

  • “Valore”=”stringa” per i valori di tipo REG_SZ
  • “Valore”=dword:stringa per i valori di tipo REG_DWORD
  • “Valore”=hex:stringa per i valori di tipo REG_BINARY
  • “Valore”=hex(2):stringa per i valori di tipo REG_EXPAND_SZ
  • “Valore”=hex(7):stringa per i valori di tipo REG_MULTI_SZ

Dunque, per i valori REG_SZ e REG_DWORD è pensabile inserire a mano i valori, mentre potrebbe diventare non proprio fattibile farlo per i valori REG_BINARY, REG_MULTI_SZ e REG_EXPAND_SZ.

Di seguito vediamo un esempio di file .reg:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Control Panel\Desktop]

“MenuShowDelay”=”100”

“ForegroundFlashCount”=dword:00000003

“UserPreferencesMask”=hex:b0,12,01,80

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]

“AppData”=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,\

4c,00,45,00,25,00,5c,00,44,00,61,00,74,00,69,00,20,00,61,00,70,00,70,00,6c,\

00,69,00,63,00,61,00,7a,00,69,00,6f,00,6e,00,69,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]

“PagingFiles”=hex(7):45,00,3a,00,5c,00,70,00,61,00,67,00,65,00,66,00,69,00,6c,\

00,65,00,2e,00,73,00,79,00,73,00,20,00,33,00,38,00,34,00,20,00,35,00,31,00,\

Quanto appena visto si può anche scrivere in modo maggiormente leggibile con un file .bat nel seguente modo:

REG ADD “HKCU\Control Panel\Desktop” /t REG_SZ /v MenuShowDelay /d 100 /f

REG ADD “HKCU\Control Panel\Desktop” /t REG_DWORD /v ForegroundFlashCount /d 3 /f

REG ADD “HKCU\Control Panel\Desktop” /t REG_BINARY /v UserPreferencesMask /d b0120180 /f

REG ADD “HKCU\”Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders” /t REG_EXPAND_SZ /v AppData /d “%USERPROFILE%\Dati Applicazioni” /f

REG ADD “HKLM\”SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management” /t REG_MULTI_SZ /v PaginFiles /d “E:\pagefile.sys 384 512” /f

Faccio notare, che il parametro f alla fine di ogni riga sovrascrive le voci senza chiedere conferma.

roghan

[Pillola] Controllare quando è stato riavviato Windows

Spesso è utile sapere in che momento è stato riavviato un sistema operativo Windows , che sia un server o un sistema desktop. E’ possibile conoscere l’esatto momento in cui è avvenuto il riavvio guardando tra gli eventi di Windows.

Spesso è utile sapere in che momento è stato riavviato un sistema operativo Windows , che sia un server o un sistema desktop. E’ possibile conoscere l’esatto momento in cui è avvenuto il riavvio guardando tra gli eventi di Windows:

  1. (Windows Vista/7/8) Aprire Administrative Tools -> Event Viewer.
  2. (Windows 10) Cercare Events usando la barra di ricerca di sistema.
  3. Andare alla voce Windows Logs e selezionare System.
  4. Per sapere quando il sistema è stato spento, filtrare gli eventi in base al codice ID 6006. In realtà l’evento indica la chiusura del servizio “event log”, un servizio che viene chiuso poco prima dello shutdown effettivo del sistema.
  5. Per sapere invece quando il sistema è stato avviato, filtrare gli eventi secondo il codice ID 6005 (avvio del servizio “event log”).

Event log

roghan

Errore in Windows: “A system shutdown is in progress”

Difficoltà articolo (0->10): 5

Mi è capitato qualche giorno fa di dover riavviare un server da remoto, ma per qualche motivo il processo di reboot non è andato a buon fine e il sistema operativo è rimasto in esecuzione e in stallo. Questo è successo molto probabilmente perché il sistema operativo non è stato in grado di chiudere una delle tante applicazioni in esecuzione rendendo di fatto impossibile il processo di riavvio.

Come consuetudine avevo lanciato il riavvio da command line in questo modo:

shutdown /r /t 60

ho atteso un bel po’, pensando che la chiusura di qualche applicazione avesse richiesto più tempo del dovuto. Invece il sistema operativo non si è riavviato, restando con tutti i servizi/applicazioni in esecuzione. Provando a lanciare nuovamente il comando di riavvio ho ricevuto questo errore:

A system shutdown is in progress.(1115)

Questo messaggio di errore indica che il sistema operativo ha ricevuto correttamente il comando di reboot ma è impossibilitato ad eseguirlo nonostante il processo sia iniziato. Inoltre in questo stato non c’è garanzia che tutti i servizi siano attivi e funzionanti correttamente perché il processo di reboot potrebbe aver già stoppato alcune applicazioni. Dunque è bene prestare attenzione in questo caso se il server è in produzione, e potremmo voler tentare un riavvio forzato.

Per risolvere la situazione di stallo è necessario chiudere l’applicazione winlogon, e questo può essere fatto facilmente usando l’utility PsKill della Sysinternals in questo modo:

pskill -t \\computername winlogon

Incrociate le dita… et voilà, il sistema verrà sbloccato e si riavvierà all’istante!

Per il download dell’applicazione PsKill possiamo usare il seguente link:

roghan

Connettere una macchina virtuale attraverso un proxy

Vediamo oggi come configurare una VM, ospitata all’interno di un sistema operativo host Windows, in modo da poterla collegare ad Internet passando attraverso un proxy. Ad esempio questo è necessario in alcuni ambienti dove la navigazione su Internet è possibile solo attraverso un proxy, per motivi di policy interne di sicurezza (aziendale per esempio…). […]

Difficoltà articolo (0->10): 5

Requisiti: conoscenze minime di software di virtualizzazione lato desktop.

Vediamo oggi come configurare una VM, ospitata all’interno di un sistema operativo host Windows, in modo da poterla collegare ad Internet passando attraverso un proxy. Ad esempio questo è necessario in alcuni ambienti dove la navigazione su Internet è possibile solo attraverso un proxy, per motivi di policy interne di sicurezza (aziendale per esempio…). Ecco un’immagine della nostra semplice infrastruttura:

Test infrastructure
Infrastruttura

Innanzitutto il nostro test è stato eseguito facendo uso di VMware Player, anche se può essere applicato bene anche nel caso di altri software di virtualizzazione lato desktop (Oracle VirtualBox …). Importante è anche bene conoscere come funziona la parte della connettività con un ambiente virtuale, e questo è un requisito fondamentale per poter poi andare a configurare i parametri corretti. E’ un argomento lungo, e necessiterebbe di un articolo a parte, ma in rete si trovano decine di post dettagliati come questo:

http://www.carbonwind.net/Virtualization/VMware-Player-Networking-Options/VMware-Player-Networking-Options.htm

Dunque, dobbiamo identificare qual’è la scheda di rete connessa ad Internet, se già non lo sappiamo, e per far ciò possiamo utilizzare il comando ipconfig come in figura.

Comando ipconfig
Comando ipconfig

In questo caso ci sono 3 schede di rete, e quella connessa ad Internet è quella con label “Local Area Connection”. Da notare che l’installazione di VMware Player\Workstation comporta la creazione di almeno due nuove schede di rete virtuali, come visibile sempre in figura. La creazione di questi 2 adapter virtuali è necessaria per il corretto funzionamento delle connessioni virtuali della VM, come è spiegato in dettaglio al link sopra indicato. In breve, la scheda di rete VMnet1 è usata dalla VM nel caso in cui sia selezionata l’opzione “Bridged” (vedere più sotto), mentre la VMnet8 nel caso venga usata l’opzione “NAT”.

Dunque, andiamo alla sezione di configurazione delle connessioni di rete di Windows, come in figura.

Network connections
Network connections di Windows

Selezioniamo le proprietà della schede di rete connessa ad Internet (“Local Area Connection”).

All’interno della finestra delle proprietà spostiamoci nel tab “Sharing“, e mettiamo una spunta alla proprietà “Allow other network users to connect through this computer’s Internet connection” controllando che sotto “Home networking connection” sia specificata la scheda di rete VMnet8 (la scheda di rete usata dalla VM). In questo modo i pacchetti inviati dalla VM potranno essere inoltrati verso il proxy e la rete esterna passando dalla scheda di rete specificata (qui appunto la “Local Area Connection”).

Internet Connection Sharing
Internet Connection Sharing

Adesso dobbiamo configurare la scheda di rete della VM. Apriamo VMware Player e la configurazione della nostra VM, e posizioniamoci all’interno delle proprietà alla voce “Network Adapter“. Qui selezioniamo le voci come nella figura sottostante, abilitando “Connect at power on” (praticamente è l’analogo del collegamento del cavo di rete alla scheda di rete, virtuale in questo caso) e scegliendo “NAT“.
VMware networking configuration

L’ultimo step è quello di avviare la VM e di configurare il sistema operativo della VM (Windows, XP, 7, 8, Linux, …) per l’utilizzo del proxy (ovviamente dobbiamo conoscere indirizzo IP e porta del proxy da usare):

oppure possiamo configurare le singole applicazioni all’interno della VM (browser, chat, …) per l’accesso tramite proxy.

roghan

VBA e problemi di visualizzazione dei numeri decimali in Excel

Spesso ho necessità di utilizzare piccoli script VBA per eseguire determinate operazioni su Excel, a volte operazioni anche su numeri. Purtroppo è facile con Excel fare confusione quando si lavora con i numeri, difatti un numero può essere rappresentato in modo differente a seconda delle proprie impostazioni. Ad esempio un numero può essere rappresentato nei seguenti modi: […]

Spesso ho necessità di utilizzare piccoli script VBA per eseguire determinate operazioni su Excel, a volte operazioni anche su numeri. Purtroppo è facile con Excel fare confusione quando si lavora con i numeri, difatti un numero può essere rappresentato in modo differente a seconda delle proprie impostazioni. Facciamo un po’ di chiarezza :-).

Innanzitutto uno stesso numero può essere rappresentato con varie notazioni:

  • 1000,123
  • 1000.123
  • 1.000,123

supponendo che il numero effettivo sia 1000 con parte decimale 123. In questo caso le varie notazioni internazionali possono rappresentarlo in vari modi come ad esempio 1.000,123 dove il punto indica le migliaia e la virgola la parte decimale.

Il problema può essere gestito in due modi usando Excel:

  1. nel caso in cui si lavori unicamente con Excel (senza usare VBA), è sufficiente configurare correttamente le opzioni di Excel.
  2. nel caso in cui utilizziamo script VBA o macro, che esportano ad esempio i dati su file ed effettuano manipolazione sui numeri, bisogna controllare invece le impostazioni del sistema operativo.

Vediamo il primo caso. Come ho scritto, nel caso in cui si lavori unicamente con un foglio Excel e NON ci sia la necessità di esportare dati tramite VBA, gli unici parametri importanti per la configurazione di punto/virgola si trovano all’interno delle opzioni di Excel.

excel_options
Opzioni avanzate di Excel.

A seconda delle proprie necessità possiamo configurare punto o virgola come separatore per i numeri decimali, così come per le migliaia.

Nel secondo caso, in cui usiamo VBA per esportare i dati (ad esempio elaborare/esportare i dati di uno sheet Excel in un file txt) entrano in gioco le impostazioni del sistema operativo. Questo vuol dire che i numeri esportati all’esterno di Excel potrebbero avere una notazione diversa da quella configurati in Excel stesso. Ad esempio:

  1. in Excel abbiamo il numero 1000,123
  2. VBA esporta il numero prelevato da una cella Excel come 1000.123

Potrebbe avvenire una “conversione” di questo tipo se sono configurate male le impostazioni di “Region and Language” di Windows. Dunque controlliamo la nostra configurazione all’interno del pannello di controllo, come visibile in figura.

region_and_language

region_and_language_window

Dunque apriamo “Additional settings“, controlliamo i separatori configurati per decimali e migliaia (Digit grouping), ed eventualmente modifichiamoli.

Region_and_language_additional_settings

Matteo

Controllare quando è stato riavviato il sistema in Windows

Spesso è utile sapere in che momento è stato riavviato un sistema Windows , che sia un server o un sistema desktop. E’ possibile conoscere l’esatto momento in cui è avvenuto il riavvio guardando tra gli eventi di Windows. Gli step da seguire sono i seguenti: […]

Spesso è utile sapere in che momento è stato riavviato un sistema Windows , che sia un server o un sistema desktop. E’ possibile conoscere l’esatto momento in cui è avvenuto il riavvio guardando tra gli eventi di Windows. Gli step da seguire sono i seguenti:

  1. aprire Administrative Tools -> Event Viewer;
  2. andare alla voce Windows Logs e selezionare System;
  3. filtrare gli eventi in base al codice ID 6006, che indica lo shutdown della macchina. In realtà l’evento indica la chiusura del servizio “event log”, un servizio che viene chiuso poco prima dello shutdown del sistema;
  4. filtrare invece gli eventi secondo il codice ID 6005 per sapere quando il sistema si è avviato (avvio del servizio “event log”).

Event log

roghan

Aggiungere eseguibili alla variabile d’ambiente PATH in Windows

In Windows può essere utile richiamare dal command prompt (cmd) un eseguibile direttamente con il nome del file, anziché dover specificare il nome assoluto della directory. Ad esempio il programma nmap (nella versione attuale 6.25) non viene installato all’interno del sistema e pertanto è necessario scompattare la sua directory in qualche posizione come la seguente: […]

In Windows può essere utile richiamare dal command prompt (cmd) un eseguibile direttamente con il nome del file, anziché dover specificare il nome assoluto della directory. Ad esempio il programma nmap (nella versione attuale 6.25) non viene installato all’interno del sistema e pertanto è necessario scompattare la sua directory in qualche posizione come la seguente:

C:\Program Files\nmap-6.25

In questo caso il software può essere richiamato dalla console solamente posizionandosi all’interno della directory e digitando nmap.exe in questo modo

cmd_nmap

Se vogliamo invece eseguire il software da qualunque posizione dobbiamo modificare le variabili d’ambiente:

set PATH=C:\dir;%PATH%

ricordando però che questa modifica è temporanea e valida solo per quel command prompt (sessione).

Per rendere effettiva la modifica dobbiamo andare in Computer->Properties->Advanced->Environment Variables e aggiungere la voce come in figura sotto.

set_exe_in_path

roghan

[Articolo] Il comando netstat in Windows: come interpretare le connessioni

Analizziamo oggi il comando netstat, uno dei principali comandi per fare troubleshooting delle reti in ambiente Windows e per controllare quali connessioni sono stabilite.

Vediamo i 5 casi di utilizzo più importanti e da tenere sott’occhio. […]

Difficoltà articolo (0->10): 6

Analizziamo oggi il comando netstat, uno dei principali comandi per fare troubleshooting delle reti in ambiente Windows e per controllare quali connessioni sono stabilite.

Vediamo i 5 casi di utilizzo più importanti e da tenere sott’occhio.

1 – Lista connessioni e porte in ascolto: netstat -an

Questo è il caso più semplice di utilizzo del comando che elenca tutte le connessioni comprese quelle attive (stato ESTABLISHED), e quelle con una porta in ascolto (stato LISTENING). L’opzione n non è essenziale, ma è secondo me utile perché effettua un DNS lookup andando a mostrare indirizzo IP al posto di ogni hostname. I possibili stati in cui una connessione può trovarsi sono quelli mostrati nella tabella seguente.

Stato Descrizione
CLOSED Indica che il server ha ricevuto dal client un messaggio ACK e la connessione è chiusa.
CLOSE_WAIT Indica che il server ha ricevuto dal client il primo FIN e la connessione è in fase di chiusura.
ESTABLISHED Indica che il server ha ricevuto dal client un SYN e la sessione è stata stabilita.
FIN_WAIT_1 Indica che la connessione è ancora attiva ma al momento non è usata e verrà chiusa.
FIN_WAIT_2 Indica che il client ha ricevuto l’ACK del server, dopo che il server ha ricevuto il primo FIN dal client.
LAST_ACK Indica che il server sta per inviare il proprio messaggio FYN.
LISTENING Indica che il server è in ascolto e pronto ad accettare una nuova connessione.
SYN_RECEIVED Indica che il server ha ricevuto il SYN inviato dal client.
SYN_SEND Indica che la connessione è attiva.
TIME_WAIT Indica che la connessione è in fase di chiusura, ma è ancora attiva.
screen_netstat1
netstat -an

Tutti zero nella colonna “Foreign” significa che ancora non ci sono indirizzi remoti, e pertanto la linea rappresenta un servizio in ascolto. Nel momento in cui un servizio riceve una connessione in ingresso, allora verrà stabilita una nuova connessione e dunque verrà mostrata una linea specifica all’interno della lista di connessioni.

Su questo sito si trova un’ottima spiegazione degli stadi e delle transizioni nel protocollo TCP, e il diagramma mostrato è veramente ben fatto:

TCP-StateTransitionDiagram-NormalTransitions

2 – Fully qualified domain name: netstat -f

Con questo parametro il comando mostra il nome intero (FQDN) di ogni indirizzo IP, risolvendolo internamente o se possibile esternamente.

netstat -f
netstat -f

3 – Tabella di routing: netstat -r

L’opzione permette di mostrare la tabella di routing del sistema, ed è l’analogo del comando route print.

netstat -r
netstat -r

4 – Processo per ogni porta: netstat -aon oppure nestat -b

In questo modo per ogni porta aperta nel sistema vengono elencati lo stato e l’identificativo del processo (PID) che ha aperto la porta. L’opzione b è migliore perché mostra direttamente l’eseguibile del processo in esecuzione ma richiede i permessi di amministratore per poter essere eseguita.

netstat -aon
netstat -aon

5 – Statistiche di rete: netstat -s -p IP

Mostra le statistiche di rete relative al livello 3, ossia IP. E’ possibile in questo modo vedere eventuali errori o problemi di connessione.

netstat -s -p IP
netstat -s -p IP

Sono utili anche la possibilità di mantenere la lista aggiornata ad un certo intervallo (ad esempio ogni 5 secondi):

nestat -an 5

e quella di salvare l’output del comando in un file:

netstat -an >> C:\connections_list.txt

roghan

Convertire csv in xls/xlsx con Excel

In questo articolo vedremo come convertire un file csv, in cui i dati sono generalmente separati da un separatore (virgola, 2 punti, punto e virgola), in un file Excel xls/xlsx e con i dati correttamente suddivisi in colonne. Le istruzioni seguenti si riferiscono alla versione inglese di Excel. […]

In questo articolo vedremo come convertire un file csv, in cui i dati sono generalmente separati da un separatore (virgola, 2 punti, punto e virgola), in un file Excel xls/xlsx e con i dati correttamente suddivisi in colonne. Le istruzioni seguenti si riferiscono alla versione inglese di Excel.

Per prima cosa selezionare il tab Data, quindi la colonna interessata (ad esempio la colonna A), e poi “Test to Columns“, come visibile nella seguente figura.

screen1

Dobbiamo poi seguire i passi degli screenshot seguenti, selezionando “Delimited

screen2

specificando poi il delimitatore degli elementi (il modo in cui gli elementi sono separati nel file csv), che in genere è la virgola o il punto e virgola

screen3

La finestra precedente mostra anche un’anteprima del risultato finale.

Dunque dobbiamo indicare il formato delle celle destinazione (lasciamo tranquillamente il formato generale).

screen4

Il risultato finale sarà quello visibile nella seguente figura.

screen5
Risultato finale.

Come ultimo step dobbiamo salvare il file in formato xls/xlsx se vogliamo un file conforme agli standard di Excel.

Matteo aka roghan

Differenze tra ODBC e OLE DB in Windows

Trattiamo oggi le differenze principali che ci sono tra le 2 API: ODBC e OLE DB. Innanzitutto entrambe sono delle interfacce standard che permettono di accedere a database e/o dati di varia natura in ambiente Microsoft Windows (ODBC non è specifico solo per Windows).

Open Database Connectivity (ODBC) è uno standard open, supportato dalla maggior parte dei vendor. Fornisce un accesso ai database relazionali aggirando le limitazioni dell’applicazione nativa, che potrebbe non essere in grado di accedere a tali database. ODBC costituisce pertanto un’interfaccia per accedere a qualunque RDBMS che supporti le API ODBC, come ad esempio Oracle, MS SQL Server, o MySQL. […]

Trattiamo oggi le differenze principali che ci sono tra le 2 API: ODBC e OLE DB. Innanzitutto entrambe sono delle interfacce standard che permettono di accedere a database e/o dati di varia natura in ambiente Microsoft Windows (ODBC non è specifico solo per Windows).

Open Database Connectivity (ODBC) è uno standard open, supportato dalla maggior parte dei vendor. Fornisce un accesso ai database relazionali aggirando le limitazioni dell’applicazione nativa, che potrebbe non essere in grado di accedere a tali database. ODBC costituisce pertanto un’interfaccia per accedere a qualunque RDBMS che supporti le API ODBC, come ad esempio Oracle, MS SQL Server, o MySQL.

Object Linking and Embedding Database (OLE DB) è invece una standard API specifica di Microsoft, sviluppata con l’obiettivo di maggiori prestazioni e in grado di accedere ad una maggior quantità di dati differenti. Difatti la sua particolarità è di permettere l’accesso sia a database relazionali che non, nel primo caso facendo uso di ODBC. Ad esempio è possibile accedere a MS SQL Server, Oracle, Excel, file raw e di altra natura in genere.

Riepilogando, le principali differenze tra i due sono:

  • ODBC:
    • fornisce accesso solo ai database relazionali;
    • è meno efficiente;
    • è uno standard open;
  • OLE DB:
    • fonisce accesso ai dati indipendentemente dalla loro posizione e formato;
    • fornisce accesso alle sorgenti e ai driver ODBC (dunque database relazionali);
    • è più efficiente.

Di seguito l’immagine mostra chiaramente il rapporto tra OLE DB e ODBC, e a quali dati riescono ad accedere.

OLE DB and ODBC differences
Architettura funzionale di OLE DB e ODBC.

Alcuni approfondimenti sono:

roghan