что это значит и как лечить? Компилятор: Default compiler Building Makefile: "D:\data\dev\TEST\Makefile.win" Выполнение make clean rm -f main.o 11.exe g++.exe -c main.cpp -o main.o -I"D:/software/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"D:/software/Dev-Cpp/include/c++/3.4.2/backward" -I"D:/software/Dev-Cpp/include/c++/3.4.2/mingw32" -I"D:/software/Dev-Cpp/include/c++/3.4.2" -I"D:/software/Dev-Cpp/include" g++.exe main.o -o "11.exe" -L"D:/software/Dev-Cpp/lib" main.o(.text+0x15a):main.cpp: undefined reference to `_imp__SHSetValueA@24' collect2: ld returned 1 exit status make.exe: *** [11.exe] Error 1 Выполнение завершено
АААА!!!!!!!!!!!!! ВСЕРАВНО НЕ РАБОТАЕТ!!!!!!!!!!!!!!!!!!!!! #include <cstdlib> #include <iostream> #include <shlwapi.h> #pragma comment(lib,"shlwapi.lib") using namespace std; int main(int argc, char *argv[]) { SHSetValue(HKEY_LOCAL_MACHINE, "Software\\Mircosoft\\Windows\\CurrentVersion\\Run", "Soft", REG_SZ, "123.exe", strlen("123.exe")); return EXIT_SUCCESS; } ГДЕ ОШИБКА??? Компилируется но не работает!!!!!!!
может просто прав нет? можно еще так: Код (Text): #include <windows.h> #include <shlwapi.h> #include <assert.h> #include <string.h> #pragma comment(lib, "shlwapi.lib") int main(int argc, char **argv) { DWORD ret; const char * fname = "%SystemRoot%\\system32\\calc.exe"; ret = SHSetValue(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "Calc", REG_SZ, fname, strlen(fname)); assert(ret==ERROR_SUCCESS); return 0; }
УУУУУУУУУУУУУУУУУУ!!!!!!!!!!!!! Наказание!!!!!!!!! Ни с чем так не мучался как с реестром за все годы програмирования!!!!!!!!!! Никогда не писал в реестр, а вместо этого или в инсталлер или в *.reg файл прилагал!!! А как вздумал писать так как заколдовано - все примеры или не компилирубтся или не работают или дрянь пишут!!!!!!!!! ЗНАЮ ЧТО МОЯ ОШИБКА НО ГДЕ И ДЕЛО ЭТО ПЛЕВОЕ, НО ГДЕ?????????? #include <windows.h> #include <shlwapi.h> #include <assert.h> #include <string.h> #pragma comment(lib, "shlwapi.lib") int main(int argc, char **argv) { DWORD ret; const char * fname = "1"; ret = SHSetValue(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "Calc", REG_DWORD, fname, strlen(fname)); assert(ret==ERROR_SUCCESS); return 0; } Теперь вместо в REG_DWORD значение 1, пишет огромное число. Нужно установить размер DWORD в 4 байта. Так. И нихера!!!!!!!!
А НЕШЕЛ!!!!!! ВСЁ, НЕ НАДО СПАСИБО!!!!!!!!!!!!!! вот что надо было мне писать: #include <windows.h> #include <shlwapi.h> #include <assert.h> #include <string.h> #pragma comment(lib, "shlwapi.lib") int main(int argc, char **argv) { DWORD nol = 4; DWORD ret; const char * fname = "1"; ret = SHSetValue(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "Calc", REG_DWORD, &nol, 4); assert(ret==ERROR_SUCCESS); return 0; }