Ошибка вычисления длины строки wchar_t - C (СИ)
Формулировка задачи:
Делаю автозагрузку приложения, проблема в lstrlenW(appPath), она не вычисляет полную длину строки, отбрасывает несколько последних символов.
// Получаем путь к приложению wchar_t appPath[32767]; GetModuleFileNameW(NULL, appPath, 32767); // Заполняем путь в реестре wchar_t *autorunPath = L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"; wchar_t *appName = L"CApplication.exe"; // Объявляем ключ HKEY hKey = NULL; // Записываем в реестр RegOpenKeyExW(HKEY_CURRENT_USER, autorunPath, 0, KEY_WRITE, &hKey); RegSetValueExW(hKey, appName, 0, REG_SZ, (BYTE *)appPath, lstrlenW(appPath)); RegCloseKey(hKey);
Посоветовали использовать wcslen, ничего не изменилось, так же теряется часть пути.
Решение задачи: «Ошибка вычисления длины строки wchar_t»
textual
Листинг программы
// Автозагрузка void SetAutorun() { // Получаем путь к приложению wchar_t appPath[32767]; GetModuleFileNameW(NULL, appPath, 32767); // Заполняем путь в реестре wchar_t *autorunPath = L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"; wchar_t *appName = L"CApplication.exe"; // Объявляем ключ HKEY hKey = NULL; // Записываем в реестр RegOpenKeyExW(HKEY_CURRENT_USER, autorunPath, 0, KEY_WRITE, &hKey); RegSetValueExW(hKey, appName, 0, REG_SZ, (BYTE *)appPath, (lstrlenW(appPath) * sizeof(wchar_t)) + 2); RegCloseKey(hKey); }
Объяснение кода листинга программы
- Получение пути к приложению
- Заполнение пути в реестре
- Объявление ключа
- Запись в реестр
- Закрытие ключа
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д