autostart probs
-
hi
ich möchte gern mein programm über die registry autostarten, doch ich habe ein problem.
CODE:BYTE pfad[] = "laufwerk\\programmpfad\\name.exe"; HKEY hkey; RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey, 0); RegSetValueEx(hkey, "schluessel", 0, REG_SZ, pfad, sizeof(pfad)); RegCloseKey(hkey);
FEHLERMELDUNG
Form1.h(207) : error C2664: 'RegCreateKeyExW': Konvertierung des Parameters 2 von 'const char [46]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.Form1.h(208) : error C2664: 'RegSetValueExW': Konvertierung des Parameters 2 von 'const char [11]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.dann habe ich das so gemacht
CODE:BYTE pfad[] = "laufwerk\\programmpfad\\name.exe"; HKEY hkey; RegCreateKeyEx(HKEY_CURRENT_USER,TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey, 0); RegSetValueEx(hkey, TEXT("schluessel"), 0, REG_SZ, pfad, sizeof(pfad)); RegCloseKey(hkey);
FEHLERMELDUNG
error LNK2028: Nicht aufgelöstes Token (0A00000E) ""extern "C" long __stdcall RegCloseKey(struct HKEY__ *)" (?RegCloseKey@@$$J14YGJPAUHKEY__@@@Z)", auf das in Funktion ""private: void __clrcall deinmama::Form1::button3_Click(class System::Object ^,class System::EventArgs ^)" (?button3_Click@Form1@deinmama@@$$FAAAVObject@System@@PAAVEventArgs@4@@Z)" verwiesen wird. error LNK2028: Nicht aufgelöstes Token (0A00000F) ""extern "C" long \_\_stdcall RegSetValueExW(struct HKEY\_\_ *,wchar\_t const *,unsigned long,unsigned long,unsigned char const *,unsigned long)" (?RegSetValueExW@@AAMXPAAVEventArgs@4@@Z)" verwiesen wird.
error LNK2028: Nicht aufgelöstes Token (0A000010) ""extern "C" long __stdcall RegCreateKeyExW(struct HKEY__ *,wchar_t const *,unsigned long,wchar_t *,unsigned long,unsigned long,struct _SECURITY_ATTRIBUTES *,struct HKEY__ * *,unsigned long *)" (?RegCreateKeyExW@@$$J236YGJPAUHKEY__@@PB_WKPA_WKKPAU_SECURITY_ATTRIBUTES@@PAPAU1@PAK@Z)", auf das in Funktion ""private: void __clrcall deinmama::Form1::button3_Click(class System::Object ^,class System::EventArgs ^)" (?button3_Click@Form1@deinmama@@$$FAAAVObject@System@@PAAVEventArgs@4@@Z)" verwiesen wird. error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" long \_\_stdcall RegCloseKey(struct HKEY\_\_ *)" (?RegCloseKey@@J14YGJPAUHKEY__@@@Z)" in Funktion ""private: void \_\_clrcall deinmama::Form1::button3\_Click(class System::Object ^,class System::EventArgs ^)" (?button3_Click@Form1@deinmama@@AAMXPAAVEventArgs@4@@Z)".
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" long __stdcall RegSetValueExW(struct HKEY__ *,wchar_t const *,unsigned long,unsigned long,unsigned char const *,unsigned long)" (?RegSetValueExW@@$$J224YGJPAUHKEY__@@PB_WKKPBEK@Z)" in Funktion ""private: void __clrcall deinmama::Form1::button3_Click(class System::Object ^,class System::EventArgs ^)" (?button3_Click@Form1@deinmama@@$$FAAAVObject@System@@PAAVEventArgs@4@@Z)". error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" long \_\_stdcall RegCreateKeyExW(struct HKEY\_\_ *,wchar\_t const *,unsigned long,wchar\_t *,unsigned long,unsigned long,struct \_SECURITY\_ATTRIBUTES *,struct HKEY__ * *,unsigned long *)" (?RegCreateKeyExW@@J236YGJPAUHKEY__@@PB\_WKPA\_WKKPAU\_SECURITY\_ATTRIBUTES@@PAPAU1@PAK@Z)" in Funktion ""private: void \_\_clrcall deinmama::Form1::button3\_Click(class System::Object ^,class System::EventArgs ^)" (?button3_Click@Form1@deinmama@@AAMXPAAVEventArgs@4@@Z)".
fatal error LNK1120: 6 nicht aufgelöste externe Verweise.sorry ist ziemlich viel, aber ich weiß mir nichtmehr zu helfen.
danke
zapp
-
Das Problem beheben wird vermutlich:
#pragma comment(lib, "Advapi32.lib")
Auch musst Du natürlich *immer* mit TCHAR arbeiten!ABER: Warum nimmst Du nicht die Registry-Funktionen aus .NET???? (siehe Registry class). Da ist der Zugriff viel einfacher als mit den WinAPI Funktionen!
-
danke also fehlermeldung kommt keine mehr, aber key wird keiner erstellt, was meinst du mict tchar. und wie is das mit der winapi
danke
zapp
-
Du musst es so machen... leider ist das Beispiel in der FAQ auch noch nicht TCHAR-Enabled...
LPCTSTR pfad[] = _T("laufwerk\\programmpfad\\name.exe"); HKEY hkey; RegCreateKeyEx(HKEY_CURRENT_USER,_T("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey, 0); RegSetValueEx(hkey, _T("schluessel"), 0, REG_SZ, pfad, sizeof(pfad)); RegCloseKey(hkey);
PS: Ob die Länge jetzt so stimmt bin ich mir unschlüssig... besser wäre:
(lstrlen(pfad)+1)*sizeof(TCHAR)
-
ich weiß nicht was da los ist...
1>c:\eigene dateien\visual studio 2005\projects\registry\registry\Form1.h(99) : error C3861: "_T": Bezeichner wurde nicht gefunden.
1>c:\eigene dateien\visual studio 2005\projects\registry\registry\Form1.h(101) : error C3861: "_T": Bezeichner wurde nicht gefunden.
1>c:\eigene dateien\visual studio 2005\projects\registry\registry\Form1.h(102) : error C2070: 'LPCTSTR []': Ungültiger sizeof-Operand
1>c:\eigene dateien\visual studio 2005\projects\registry\registry\Form1.h(102) : error C3861: "_T": Bezeichner wurde nicht gefunden.
1>Das Buildprotokoll wurde unter "file://c:\Eigene Dateien\Visual Studio 2005\Projects\registry\registry\Debug\BuildLog.htm" gespeichert.
1>registry - 4 Fehler, 0 Warnung(en)
-
Es fehlt ein:
#include <tchar.h>
-
es tut mir echt leid, dass ich mich so schwer tue könntest du das jetzt noch einmal in einem code zusammenfassen??
DANKE
zapp