русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Системный реестр


Дата добавления: 2013-12-23; просмотров: 682; Нарушение авторских прав


Общий каталог пользователей

Домашний каталог пользователя

Для хранения настроек слишком больших для того чтобы их размещать в реестре существуют специально выделенные каталоги внутри домашнего каталога пользователя ("Documents and Settings\Имя Пользователя"). Эти каталоги обычно называются "специальными каталогами" и имеют имена Application Data и Local Settings. Полный путь к ним можно получить с помошью функций SHGetSpecialFolderPath или SHGetFolderPath.

Обычно это каталог "Documents and Settings\All users". Внутри него имеются такие-же подкаталоги для хранения настроек и данных программ но относящихся ко всем пользователям. Полный путь к ним можно также получить с помошью функций SHGetSpecialFolderPath или SHGetFolderPath.

API (application programming interface) – интерфейс прикладного программирования (иногда интерфейс программирования приложений). Другими словами, это те возможности (функции, переменные, константы, классы), которые предоставляет система (не обязательно ОС) для использования прикладными программами.

API:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724871%28v=vs.85%29.aspx

Про реестр:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724946%28v=vs.85%29.aspx

 

Пример:

// ftpsrv.cpp : Defines the entry point for the console application.

//

 

 

// QueryKey - Enumerates the subkeys of key and its associated values.

// hKey - Key whose subkeys and values are to be enumerated.

 

#include <windows.h>

#include <stdio.h>

#include <tchar.h>

 

#define MAX_KEY_LENGTH 255

#define MAX_VALUE_NAME 16383

 

DWORD WINAPI QueryKey(void* hKey1)

{

TCHAR achKey[MAX_KEY_LENGTH]; // buffer for subkey name

DWORD cbName; // size of name string



TCHAR achClass[MAX_PATH] = TEXT(""); // buffer for class name

DWORD cchClassName = MAX_PATH; // size of class string

DWORD cSubKeys=0; // number of subkeys

DWORD cbMaxSubKey; // longest subkey size

DWORD cchMaxClass; // longest class string

DWORD cValues; // number of values for key

DWORD cchMaxValue; // longest value name

DWORD cbMaxValueData; // longest value data

DWORD cbSecurityDescriptor; // size of security descriptor

FILETIME ftLastWriteTime; // last write time

 

DWORD i, retCode;

 

 

HKEY hKey= *((HKEY*) hKey1);

TCHAR achValue[MAX_VALUE_NAME];

DWORD cchValue = MAX_VALUE_NAME;

 

 

// Get the class name and the value count.

retCode = RegQueryInfoKey(

hKey, // key handle

achClass, // buffer for class name

&cchClassName, // size of class string

NULL, // reserved

&cSubKeys, // number of subkeys

&cbMaxSubKey, // longest subkey size

&cchMaxClass, // longest class string

&cValues, // number of values for this key

&cchMaxValue, // longest value name

&cbMaxValueData, // longest value data

&cbSecurityDescriptor, // security descriptor

&ftLastWriteTime); // last write time

 

// Enumerate the subkeys, until RegEnumKeyEx fails.

 

if (cSubKeys)

{

printf( "\nNumber of subkeys: %d\n", cSubKeys);

 

for (i=0; i<cSubKeys; i++)

{

cbName = MAX_KEY_LENGTH;

retCode = RegEnumKeyEx(hKey, i,

achKey,

&cbName,

NULL,

NULL,

NULL,

&ftLastWriteTime);

if (retCode == ERROR_SUCCESS)

{

_tprintf(TEXT("(%d) %s\n"), i+1, achKey);

}

}

}

 

// Enumerate the key values.

 

if (cValues)

{

printf( "\nNumber of values: %d\n", cValues);

 

for (i=0, retCode=ERROR_SUCCESS; i<cValues; i++)

{

cchValue = MAX_VALUE_NAME;

achValue[0] = '\0';

retCode = RegEnumValue(hKey, i,

achValue,

&cchValue,

NULL,

NULL,

NULL,

NULL);

 

if (retCode == ERROR_SUCCESS )

{

_tprintf(TEXT("(%d) %s\n"), i+1, achValue);

}

}

}

return 0;

}

 

void __cdecl _tmain(void)

{

HKEY hTestKey;

HANDLE dwThreadId;

 

if( RegOpenKeyEx( HKEY_CURRENT_USER,

TEXT("SOFTWARE\\Microsoft"),

0,

KEY_READ,

&hTestKey) == ERROR_SUCCESS

)

{

 

dwThreadId=CreateThread(

NULL, // default security attributes

0, // use default stack size

QueryKey, // thread function name

&hTestKey, // argument to thread function

0, // use default creation flags

NULL); // returns the thread identifier

WaitForSingleObject(dwThreadId, INFINITE);

 

}

 

RegCloseKey(hTestKey);

system("pause");

}

 

 

Считать значение в текущем ключе:LONG WINAPI RegGetValue( __in HKEY hkey, __in_opt LPCTSTR lpSubKey, __in_opt LPCTSTR lpValue, __in_opt DWORD dwFlags, __out_opt LPDWORD pdwType, __out_opt PVOID pvData, __inout_opt LPDWORD pcbData);http://msdn.microsoft.com/en-us/library/windows/desktop/ms724868%28v=vs.85%29.aspx Записать значение в текущем ключе:LONG WINAPI RegSetValueEx( __in HKEY hKey, __in_opt LPCTSTR lpValueName, __reserved DWORD Reserved, __in DWORD dwType, __in const BYTE *lpData, __in DWORD cbData);http://msdn.microsoft.com/en-us/library/windows/desktop/ms724923%28v=vs.85%29.aspx

 



<== предыдущая лекция | следующая лекция ==>
Где хранить | Лекция 3. Психотехнология рекламной стратегии


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Полезен материал? Поделись:

Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.