Нужно написать аналог утилиты regedit для работы с реестром Windows для курсовой на c++, можно и на c#. Хотелось бы уточнить, насколько вообще это задание сложное? Какие библиотеки можно использовать для этого? С помощью каких компонентов можно создать такой графический интерфейс (дерево каталогов и т.п.)?
Это Windows программа в самой простейшей вариации. В главном окне - вертикальный сплиттер, в левой панели дерево (tree control), в правой панели список (list control). Графическое оформление легко исполняется даже на чистом WinAPI, с любым фреймворком вообще без труда. Пожалуй, проще всего будет Visual C++ и MFC - в шаблонах MFC проектов есть 'Explorer', который создает это приложение полностью, останется только добавить конкретное наполнение (то есть работу с реестром). Для работы с реестром можно использовать класс CRegKey.
ДОПОЛНЕНИЕ
Выше произошел долгий спор на тему того, нужно ли асинхронно читать реестр для последующего отображения в treectrl и listctrl. Я считаю такую оптимизацию полной глупостью, и чтобы не быть голословным, решил написать небольшой тест, который читает основные ветки и сообщает затраченное время. Первоначальная версия с GetTickCount выдала все нули, так что пришлось переделывать ее на таймер высокого разрешения.
static double frequency;
void EnumReg(LPCTSTR szHiveName, HKEY hHive) {
LARGE_INTEGER tm0;
if (!::QueryPerformanceCounter(&tm0)) throw win_error();
TCHAR szName[MAX_PATH];
DWORD uNameLen;
DWORD nKeys = 0;
LONG lr;
for (;;) {
uNameLen = MAX_PATH;
lr = ::RegEnumKeyEx(hHive, nKeys++, szName, &uNameLen, NULL, NULL, NULL, NULL);
if (lr == ERROR_NO_MORE_ITEMS) break;
if (lr != ERROR_SUCCESS) throw win_error(lr);
}
LARGE_INTEGER elaps;
if (!::QueryPerformanceCounter(&elaps)) throw win_error();
elaps.QuadPart -= tm0.QuadPart;
double elapsed = (double)elaps.QuadPart;
elapsed *= 1.0e3; // We need milliseconds
elapsed /= frequency;
_tprintf(_TEXT("%s:\t%u subkeys, elapsed time %7.3fms\n"), szHiveName, nKeys, elapsed);
}
void main() {
try {
LARGE_INTEGER freq;
if (!::QueryPerformanceFrequency(&freq)) throw win_error();
frequency = (double)freq.QuadPart;
EnumReg(_TEXT("HKEY_LOCAL_MACHINE"), HKEY_LOCAL_MACHINE);
EnumReg(_TEXT("HKEY_CURRENT_USER"), HKEY_CURRENT_USER);
EnumReg(_TEXT("HKEY_CLASSES_ROOT"), HKEY_CLASSES_ROOT);
}
catch (generic_error &se) {
printf("\n\n");
printf(se.Message());
}
TCHAR pat[120];
printf("\nPress any key...");
_getts(pat);
}
В результате вышло следующее:
Отсюда очевидно, что время наполнения и обновления контрола будет минимум на порядок превышать время чтения реестра. Это если говорить о уникально огромной ветке HKCR. Для любого другого ключа время чтения будет составлять микросекунды, так что любые многопоточные оптимизации тут будут неуместными.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть интовый массив с кодами символовЕго нужно записать в файл
Был задан такой вопрос, но я вроде как приблизился к решению вопроса о своей задачеВ интернете найден мной такой метод:
`Открываю Excel 50/95,сохраняю как Excel 2003 т