Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с c++

Шведук . Ученик (117), на голосовании 4 месяца назад
вот у меня есть код:
#include <windows.h>
#include <iostream>

int main() {
// Получаем путь к исполняемому файлу приложения
char szPath[MAX_PATH];
GetModuleFileName(NULL, szPath, MAX_PATH);

// Открываем ключ реестра для текущего пользователя в разделе автозагрузки
HKEY hKey;
if (RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Software\Microsoft\Windows\CurrentVersion\Run"), 0, KEY_WRITE, &hKey) != ERROR_SUCCESS) {
std::cerr << "Не удалось открыть ключ реестра." << std::endl;
return 1;
}

// Устанавливаем значение для автозагрузки
if (RegSetValueEx(hKey, TEXT("MyKeyboardSoftware"), 0, REG_SZ, (LPBYTE)szPath, strlen(szPath) + 1) != ERROR_SUCCESS) {
std::cerr << "Не удалось установить значение в реестре." << std::endl;
RegCloseKey(hKey);
return 1;
}

// Закрываем ключ реестра
RegCloseKey(hKey);

std::cout << "Приложение добавлено в автозагрузку." << std::endl;
return 0;
}

выдает ошибку: Ошибка (активно) E0167 аргумент типа "char *" несовместим с параметром типа "LPWSTR"
что делать??
Голосование за лучший ответ
♡$ⴎG@r₱u₷sყ♡ Искусственный Интеллект (157223) 5 месяцев назад
Так пробуй

 
#include
#include

int main() {
// Получаем путь к исполняемому файлу приложения
wchar_t szPath[MAX_PATH];
GetModuleFileName(NULL, szPath, MAX_PATH);

// Открываем ключ реестра для текущего пользователя в разделе автозагрузки
HKEY hKey;
if (RegOpenKeyEx(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_WRITE, &hKey) != ERROR_SUCCESS) {
std::cerr << "Не удалось открыть ключ реестра." << std::endl;
return 1;
}

// Устанавливаем значение для автозагрузки
if (RegSetValueEx(hKey, L"MyKeyboardSoftware", 0, REG_SZ, (LPBYTE)szPath, (wcslen(szPath) + 1) * sizeof(wchar_t)) != ERROR_SUCCESS) {
std::cerr << "Не удалось установить значение в реестре." << std::endl;
RegCloseKey(hKey);
return 1;
}

// Закрываем ключ реестра
RegCloseKey(hKey);

std::wcout << L"Приложение добавлено в автозагрузку." << std::endl;
return 0;
}
Шведук .Ученик (117) 5 месяцев назад
ОТ ДУШИ ВЕСЬ ДЕНЬ ПОЧИНИТЬ НЕ МОГ
♡$ⴎG@r₱u₷sყ♡ Искусственный Интеллект (157223) Шведук ., ?
Несмачный Дмитрий Профи (871) 5 месяцев назад
У тебя настроен юникод, а путь задается как MultiByte: char szPath[MAX_PATH];
Для устранения ошибки или убрать unicode в свойствах проекта или задать путь как unicode: wchar_t szPath[MAX_PATH];
Похожие вопросы