View Łukasz Herman's LinkedIn profileView my profile

statystyki www stat.pl

Blog > Komentarze do wpisu

Wszystkie OleDB Providery - jak wyciągnąć?

Najprościej z rejestru. Potrzebowałem poznać jakie dostępne są na serwerze na któym mam wykupiony hosting. Znalazłem kod VB który to robi, przekonwertowałem go na C# (jakimś online'owym konwerterem) i trochę zmodyfikowałem, żeby zwracał mi w miarę czytelnego stringa.

Konwerter.

Oryginalny kod.

using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using Microsoft.Win32;


namespace DataManager
{
class Module1
{

public String CountASAS()
{
int i = 0;
DictionaryEntry[] de = SearchOleDbProviders();
string wynik = "";

// Displays the ProgID and name of each provider
for (i = 0; i <= de.Length - 1; i++)
{
wynik += de[i].Key + " - ";
wynik += de[i].Value + " ; ";
}

//Waits for user input
return wynik;
}

public DictionaryEntry[] SearchOleDbProviders()
{
DictionaryEntry[] Providers = null;
Int16 nProviders = 0;

nProviders = -1;
Providers = new DictionaryEntry[1];

// I am only interested in the CLSID subtree
RegistryKey keyCLSID = Registry.ClassesRoot.OpenSubKey("CLSID", false);
string[] keys = keyCLSID.GetSubKeyNames();
DictionaryEntry de = default(DictionaryEntry);
Int32 i = 0;

// Search through the tree just one level
for (i = 0; i <= keys.Length - 1; i++)
{
RegistryKey key = keyCLSID.OpenSubKey(keys[i], false);

// Search for OLE DB Providers
de = SearchKeys(key);
if ((de.Key != null))
{
// Found one, add it to the Dictionary
nProviders += 1;
Array.Resize(ref Providers, nProviders + 1);
Providers[nProviders] = de;
}
}
return Providers;
}

public DictionaryEntry SearchKeys(RegistryKey key)
{
Int32 i = default(Int32);
DictionaryEntry de = default(DictionaryEntry);

//Tries to find the "OLE DB Provider" key
RegistryKey key2 = key.OpenSubKey("OLE DB Provider");

if ((key2 != null))
{
// Found it, fills the DictionaryEntry
de = new DictionaryEntry();
string[] sValues = key2.GetValueNames();
de.Key = key.OpenSubKey("ProgID", false).GetValue(sValues[0]);
string[] sValues2 = key2.GetValueNames();
de.Value = key2.GetValue(sValues2[0]);
}
return de;
}
}
}

 

niedziela, 28 listopada 2010, hermanluk
Tagi: OLEDB provider

Polecane wpisy

TrackBack
TrackBack w tym blogu jest moderowany. TrackBack URL do wpisu: