%windir% in C++ [erledigt] BIG THX 2 VOLKARD
-
Dieser Thread wurde von Moderator/in volkard aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
volkard schrieb:
BYTE pfad[4711]; strcpy(pfad,getWindowsPath()); strcat(pfad,"\\SYS\\Porgramm.exe");danke, aber irgendwas hab ich immernoch falsch:
std::string getWindowsPath() { char* buff = new char[MAX_PATH]; std::string ret_val; if (GetWindowsDirectory(buff, MAX_PATH)) { ret_val = buff; } delete[] buff; return ret_val; } int main() { HWND hwnd = FindWindow("ConsoleWindowClass",NULL); ShowWindow(hwnd,SW_SHOW); // console verstecken BYTE pfad[4711]; strcpy(pfad,getWindowsPath()); strcat(pfad,"\\SYS\\Porgramm.exe"); HKEY hkey; RegCreateKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey, 0); RegSetValueEx(hkey, "Programm", 0, REG_SZ, pfad, sizeof(pfad)); RegCloseKey(hkey); }bekomm beim compilieren das:
28 C:\Users\Florian\Desktop\Neuer Ordner\SYS\SYS\start.cpp no matching function for call to `strcpy(BYTE[4711], std::string)'
note C:\Dev-Cpp\include\string.h:45 candidates are: char* strcpy(char*, const char*)
29 C:\Users\Florian\Desktop\Neuer Ordner\SYS\SYS\start.cpp invalid conversion from `BYTE*' to `char*'
29 C:\Users\Florian\Desktop\Neuer Ordner\SYS\SYS\start.cpp initializing argument 1 of `char* strcat(char*, const char*)'
-
statt
BYTE pfad[4711]; strcpy(pfad,getWindowsPath()); strcat(pfad,"\\SYS\\Porgramm.exe");besser
string pfad=getWindowsPath()+"\\SYS\\Porgramm.exe";und bei der verwendung wenn pfad nicht klappt pfad.c_str() nehmen.
-
volkard schrieb:
statt
BYTE pfad[4711]; strcpy(pfad,getWindowsPath()); strcat(pfad,"\\SYS\\Porgramm.exe");besser
string pfad=getWindowsPath()+"\\SYS\\Porgramm.exe";und bei der verwendung wenn pfad nicht klappt pfad.c_str() nehmen.
funzt fast, bekomm beim compilieren noch einen error und zwar den:
32 C:\Users\Florian\Desktop\Neuer Ordner\SYS\SYS\start.cpp cannot convert `std::string' to `const BYTE*' for argument `5' to `LONG RegSetValueExA(HKEY__, const CHAR, DWORD, DWORD, const BYTE*, DWORD)'
findet er im qellencode hier:
RegSetValueEx(hkey, "Programm", 0, REG_SZ, pfad, sizeof(pfad));
-
Vielleicht
RegSetValueEx(hkey, "Programm", 0, REG_SZ, pfad.c_str(), pfad.size());
-
volkard schrieb:
Vielleicht
RegSetValueEx(hkey, "Programm", 0, REG_SZ, pfad.c_str(), pfad.size());nee, spuck der compiler den error aus:
32 C:\Users\Florian\Desktop\Neuer Ordner\SYS\SYS\start.cpp invalid conversion from `const char*' to `const BYTE*'
32 C:\Users\Florian\Desktop\Neuer Ordner\SYS\SYS\start.cpp initializing argument 5 of `LONG RegSetValueExA(HKEY__, const CHAR, DWORD, DWORD, const BYTE*, DWORD)'
-
Mit Gewalt vielleicht.
RegSetValueEx(hkey, "Programm", 0, REG_SZ, reinterpret_cast<BYTE*>(pfad.c_str()), pfad.size());
-
volkard schrieb:
Mit Gewalt vielleicht.
RegSetValueEx(hkey, "Programm", 0, REG_SZ, reinterpret_cast<BYTE*>(pfad.c_str()), pfad.size());anscheinend gewalt auch keine lösung xD
error:
32 C:\Users\Florian\Desktop\Neuer Ordner\SYS\SYS\start.cpp reinterpret_cast from type `const char*' to type `BYTE*' casts away constness
vielleicht erst convertieren?
http://dotnet-snippets.de/dns/string-in-byte-array-und-zurueck-wandeln-SID67.aspx
-
Vielleicht const vergessen.
RegSetValueEx(hkey, "Programm", 0, REG_SZ, reinterpret_cast<BYTE const*>(pfad.c_str()), pfad.size());
-
volkard schrieb:
Vielleicht const vergessen.
RegSetValueEx(hkey, "Programm", 0, REG_SZ, reinterpret_cast<BYTE const*>(pfad.c_str()), pfad.size());jaaaaaaaaaaaabadabadoooooooooooooooooo
daaaaaaaaanke

du kannst dir garnicht vorstellen wie ich mich grad freue
big thx volkard
-
hätt noch ne frage, wenn jemand zeit hat

wie kann ich nen string in ne pfadangabe mit "system" einbauen
habs so probiertsystem(getWindowsPath()+"\\SYS\\del.exe");dabei kommt dann das raus:
cannot convert `std::basic_string<char, std::char_traits<char>, std::allocator<char> >' to `const char*' for argument `1' to `int system(const char*)'
jemand ne idee wie man den string zu char convertieren kann?
-
string command=getWindowsPath()+"\\SYS\\del.exe";//zusammenbasten, ergebnis ist ein std::string system(command.c_str());//mit .c_str() wird ein entsprechender nullterminierter char* geliefert.
-
volkard schrieb:
string command=getWindowsPath()+"\\SYS\\del.exe";//zusammenbasten, ergebnis ist ein std::string system(command.c_str());//mit .c_str() wird ein entsprechender nullterminierter char* geliefert.wow, sehr elegant gelöst
darauf wär ich ned gekommen
thx nomml