Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

01.07.2010, 18:54

Hi

Zitat

Du verwendest KEY_ALL_ACCESS.
Wenn das mit KEY_QUERY_VALUE nicht klappt, würde ich stattdessen 0 angeben.
Wenn ich KEY_QUERY_VALUE bekomme ich das gleiche Ergebnis und mit 0 geht es gar nicht.

Zitat

Ausserdem hast du die restlichen Parameter samt und sonders auf NULL gesetzt.
Denke, der Parameter lpType sollte angegeben sein.
lpType muss nicht angegeben werden
Aber trotzdem danke, dass du dich meinem Problem annimmst.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »pc-jedi« (22.07.2010, 22:28)


12

01.07.2010, 19:02

Oh! Ich hab MSDN lokal installiert. Die ist nicht so aktuell wie die Online-Version. 8|
Kannst du den Rest vom Code mal hochladen?
fka tm

13

01.07.2010, 19:12

Hi

Habe das so umgecode das nur das nötigste drin ist

main.cpp

Edit: Code aus Sicherheitsgründen entfernt.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »pc-jedi« (22.07.2010, 22:29)


14

01.07.2010, 19:39

Mmh...
Bist du mal mit dem Debugger drübergegangen?
fka tm

15

01.07.2010, 19:43

Ja. Das einzige was mir auf gefalle ist das die Variable hKey den Wert 0x80 bekommt, was sicherlich nicht richtig ist.
Oder liegt bei Run bei der 0x80 Adresse?

16

01.07.2010, 23:45

Denke, das ist Ok. hKey ist ja keine Adresse, sondern ein Handle.
Kann trotzdem nicht schaden, hKey vor Verwendung zu initialisieren.

Ich schau morgen noch mal drüber.
fka tm

17

02.07.2010, 09:35

Also ich kann dir mal zeigen, wie ich damals was in die Registry geschrieben und ausgelesen habe, vielleicht hilfts ja.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    // schreiben
    char dir[MAX_PATH];
    GetModuleFileNameA(0, dir, MAX_PATH);

    HKEY hkey;
    RegCreateKeyEx(HKEY_CURRENT_USER,wxT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey, 0);    
    RegSetValueExA(hkey, "path", 0, REG_SZ, (BYTE*)&dir, strlen(dir));
    RegCloseKey(hkey);

    // löschen
    HKEY hkey;
    RegOpenKeyExA(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_ALL_ACCESS,&hkey);
    RegDeleteValueA(hkey, "path");

    //lesen
    DWORD datalen = MAX_PATH;
    BYTE data[MAX_PATH] = "";
    HKEY hkey;

    if(RegOpenKeyExA(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_ALL_ACCESS,&hkey) == ERROR_SUCCESS)
    {
        if(RegQueryValueExA(hkey, "path", NULL, 0, data, &datalen) == ERROR_SUCCESS)
        {
            std::string dir;
            char buffer[MAX_PATH];

            for(int i = 0; i < MAX_PATH; i++)
                buffer[i] = data[i];

            dir = buffer;
            dir.erase(dir.find("programm.exe"));
            SetCurrentDirectoryA(dir.c_str());
        }

        RegCloseKey(hkey);
    }
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

18

02.07.2010, 09:52

Ich habe das mal ausprobiert und nur den Schlüssel und den Wert geändert, aber trotzdem hört er bei RegQueryValueEx mit 0x02 auf.

19

02.07.2010, 10:22

Ich hab auch probiert, und dein Programm zum Testen folgendermaßen verstümmelt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <windows.h>
#include <iostream>
#include <string>
 
using namespace std;

void main()
{

    HKEY hKey;
    LONG ReturnValue = RegOpenKeyEx (HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS, &hKey);
    if(ReturnValue == ERROR_SUCCESS)
    {
        MessageBox(NULL, "Key Open", "Hint", MB_ICONINFORMATION);

        LONG RetrunValue = RegQueryValueEx(hKey, "smss32.exe", NULL, NULL, NULL, NULL);
        if(RetrunValue == ERROR_SUCCESS)
            MessageBox(NULL, "Value exist", "Hint", MB_ICONINFORMATION);
        else
            MessageBox(NULL, "Value does not exist", "Hint", MB_ICONINFORMATION);
    }
    
    RegCloseKey(hKey);
}


Und das funktioniert bei mir.

Vista, UAC ist aus, Angemeldet mit vollen Adminrechten.
Also hat es vielleicht doch was mit Zugriffsrechten zu tun?
fka tm

20

02.07.2010, 10:32

Wird wohl so sein, aber wenn ich mit Admin Starte und UAC aus ist geht es immer noch nicht. Kann es sein das Windows 7 da irgendwo einen Riegel vorgeschoben hat?

Werbeanzeige