Blog Stats
  • Posts - 7
  • Articles - 0
  • Comments - 319
  • Trackbacks - 5

 

martedì 27 febbraio 2007

Classe per leggere e scrivere da Registro

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;
}};

 

 

Copyright © Sara Fabris