#ifndef __USN_FILE_REGISTRY_H__ #define __USN_FILE_REGISTRY_H__ // La classe c_usn_file_registry permet la lecture d'une valeur dans un fichier de registres. Elle fonctionne avec une structure // de données internes (basée sur nmutility::CStdMap) qui contient l'ensemble des valeurs contenues dans le fichier. // La structure de données internes est une map où RegistryItem est une structure de 3 éléments. // - Le 1er élément représente l'endroit dans le fichier de registres où l'item se trouve // - Le 2ième élément représente la clé de registre // - Le 3ième élément réprésente la valeur associée // Exemple : les premières lignes du fichier de registres sont : // [HKEY_LOCAL_MACHINE\SOFTWARE\Entreprise\UXT\MINMGR] // "TRACE_DIRECTORY"="JOKER_TARGET\\Data\\Logs\\Traces\\Command" // "DragAndDrop"=dword:00000000 // RegistryItem correspond à : typedef struct RegistryItem { std::string path; // Exple : [HKEY_LOCAL_MACHINE\SOFTWARE\Entreprise\UXT\MINMGR] std::string key; // Exple : DragAndDrop std::string value; // Exple : dword:00000000, si présent } RegistryItem; // La clé de la map (de type string donc) est elle la concaténation de la valeur de path et de la valeur de key (car il est possible d'avoir deux clés // de fichier de registres identiques dans des chemins différents). La convention est prise de séparer cette concaténation de path // et key dans la string avec " : ". class c_usn_file_registry { public: c_usn_file_registry(void); static bool instancier_singleton(nmutility::CString nom_fichier); static c_usn_file_registry* get_singleton(); int lire_entier(nmutility::CString nom_chemin, nmutility::CString nom_valeur); nmutility::CString lire_chaine(nmutility::CString nom_chemin, nmutility::CString nom_valeur); private: static c_usn_file_registry* _p_singleton; // Instance singleton nmutility::CStdMap _map; } #endif // __USN_FILE_REGISTRY_H__