%windir% in C++ [erledigt] BIG THX 2 VOLKARD



  • 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 probiert

    system(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


Anmelden zum Antworten