using
namespace Microsoft::Win32;
using namespace System;
La classe seguente permette di leggere e scrivere nel Registro di Sistema
(classe in C++.net - Framework 1.1)
public
__gc class Registro
{
private:
String *CU; //= S"CU"; //current user
String *LM; // = S"LM"; //Local_Machine
String *CR; // = S"CR"; //classes_root
String *UR; // = S"UR"; // Users
String *CC; // = S"CC"; // current_config
public:
Registro(){
CU = S"CU";
LM = S"LM";
CR = S"CR";
UR = S"UR";
CC = S"CC";
};
String* GetValue(String* key, String* subKey, String* entry);
int CreateKey(String* key, String* subKey);
int setValue(String* key, String* subKey, String* item, Object* _value);
int deleteValue(String* key, String *subKey, String *entry);
};
Il seguente metodo permette di ottenere un valore da una chiave di Registro.
Il primo parametro deve essere CU,LM,CR,UR oppure CC.
Il secondo parametro è il nodo di Registro ad es. "Software\Microsoft\Microsoft Sql Server"
Il terzo parametro è la stringa di Registro dal quale ottenere il valore
In caso di errore ritorna il valore null altrimenti ritorna il valore della chiave di Registro.
String* Registro::GetValue(String* key, String* subKey, String* entry){
RegistryKey *reg;
try{
if (key == S"CU")
reg = Registry::CurrentUser->OpenSubKey(subKey);
else if (key == S"LM")
reg = Registry::LocalMachine->OpenSubKey(subKey);
else if (key == S"UR")
reg = Registry::Users->OpenSubKey(subKey);
else if (key == "CC")
reg = Registry::CurrentConfig->OpenSubKey(subKey);
else if (key == "CR")
reg = Registry::Users->OpenSubKey(subKey);
else
reg = Registry::LocalMachine->OpenSubKey(subKey);
return reg->GetValue(entry, 0)->ToString();
}
catch(Exception* ){
return 0;
}};
Il seguente metodo permette di cancellare una chiave di Registro.
Il primo parametro deve essere CU,LM,CR,UR oppure CC.
Il secondo parametro è il nodo di Registro ad es. "Software\Microsoft\Microsoft Sql Server"
Il terzo parametro è la stringa di Registro da cancellare
In caso di errore ritorna il valore 1, altrimenti valore 0.
int Registro::deleteValue(String *key, String *subKey, String *entry){
RegistryKey *reg;
try
{
if (key == S"CU")
reg = Registry::CurrentUser->CreateSubKey(subKey);
else if (key == S"LM")
reg = Registry::LocalMachine->CreateSubKey(subKey);
else if (key == S"UR")
reg = Registry::Users->CreateSubKey(subKey);
else if (key == "CC")
reg = Registry::CurrentConfig->CreateSubKey(subKey);
else if (key == "CR")
reg = Registry::Users->CreateSubKey(subKey);
else
reg = Registry::Users->CreateSubKey(subKey);
reg->DeleteValue(entry);
return 0;
}
catch(Exception* ){
return 1;
}};
Il seguente metodo permette di creare un nodo di Registro.
Il primo parametro deve essere CU,LM,CR,UR oppure CC.
Il secondo parametro è il nodo di Registro da creare ad es. "Software\Microsoft\Microsoft Sql Server\Test"
In caso di errore ritorna il valore 1, altrimenti valore 0.
int Registro::CreateKey(String* key, String* subKey){
RegistryKey* reg;
try
{
if (key == S"CU")
reg = Registry::CurrentUser->CreateSubKey(subKey);
else if (key == S"LM")
reg = Registry::LocalMachine->CreateSubKey(subKey);
else if (key == S"UR")
reg = Registry::Users->CreateSubKey(subKey);
else if (key == "CC")
reg = Registry::CurrentConfig->CreateSubKey(subKey);
else if (key == "CR")
reg = Registry::Users->CreateSubKey(subKey);
else
reg = Registry::Users->CreateSubKey(subKey);
return 0;
}
catch(Exception* )
{
return 1;
}};
Il seguente metodo permette di creare una chiave di Registro e di assegnargli un valore.
Il primo parametro deve essere CU,LM,CR,UR oppure CC.
Il secondo parametro è il nodo di Registro già presente ad es. "Software\Microsoft\Microsoft Sql Server"
Il terzo parametro è la chiave di Registro da creare e l'ultimo parametro è il valore che vogliamo assegnargli.
In caso di errore ritorna il valore 1, altrimenti valore 0.
int Registro::setValue(String* key, String* subKey, String* item, Object* _value){
RegistryKey* reg;
try
{
if (key == S"CU")
reg = Registry::CurrentUser->OpenSubKey(subKey, true);
else if (key == S"LM")
reg = Registry::LocalMachine->OpenSubKey(subKey, true);
else if (key == S"UR")
reg = Registry::Users->OpenSubKey(subKey, true);
else if (key == "CC")
reg = Registry::CurrentConfig->OpenSubKey(subKey, true);
else if (key == "CR")
reg = Registry::Users->OpenSubKey(subKey, true);
else
reg = Registry::Users->OpenSubKey(subKey, true);
reg->SetValue(item, _value);
reg->Close();
return 0;
}
catch(Exception* )
{
return 1;
}};