1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным. В описании темы указываем язык!!!
Здравствуйте! Мне требуется реализовать программу, считывающую из системного реестра данные об установленных в операционной системе принтерах (для рабочей станции в целом и для каждого профиля пользователя). Информацию о принтерах выводить в файл (с помощью асинхронных файловых операций).
Итак..Прежде всего мне не ясно, как добраться до этой информации?? С помощью операции RegOpenKey открыть корневой ключ HKEY_USERS (случай для каждого профиля пользователя)? А как после добраться до нужной информации? И вообще, я хотя бы в том направлении думаю? И как быть со случаем "для рабочей станции"? Объясните пожалуйста!
Для начала - в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList лежит список пользователей (подпапки данного ключа), так что для начала надо открыть указанный ключ через RegOpenKeyEx, для него сделать перечисление всех дочерних веток с сипользованием RegEnumKey, в результате ты по поочередно получаешь ID пользователей, зарегистрированных в системе. А уж как получила ID - то открывать "HKEY_USERS\\" + ID + "\\Software\Microsoft\Windows NT\CurrentVersion\Devices" (здесь хранится список принтеров для каждого конкретного пользователя) и получать всю информацию, записанную там через RegEnumValue... То есть, будет что-то типа:
HKEY keyID = 0; RegOpenKeyEx( HKEY_LOCAL_MACHINE, L"software\\microsoft\\windows NT\\CurrentVersion\\ProfileList", 0, KEY_ALL_ACCESS, &keyID ); for (int i = 0;; ++i) { wchar_t IDname[256] = {}; LONG ret = RegEnumKey(keyID, i, IDname, 256); if (ret != ERROR_SUCCESS) { break; // Все, больше подпапок нет, выходим из цикла перечисления пользователей }
// Здесь для каждого IDname открываешь его ветку HKU\...\Devices, и перечисляешь принтеры // то есть, добавляется еще один цикл
Это все было для пользователей... Для системы в целом - достаточно подобным же образом получить подпапки ключа HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers