odczyt rejestru, wywala błąd, czemu

0

Hi, męcze się pół dnia różnymi sposobami (z CRegKey tez) i nie moge odczyt HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
wartosci "desktop", czy mam gdzie s blad ponizej?

char zwrot[MAX_PATH];
long n_size=0, iLastError=0;
HKEY hKey;

iLastError=RegOpenKeyEx(HKEY_CURRENT_USER,  

"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders",
0,KEY_ALL_ACCESS, &hKey);

iLastError=RegQueryValue(hKey, "desktop", &zwrot[0], &n_size);
//tutaj error jest numer 2 , czyli nie ma takiego pliku, WHY
RegCloseKey(hKey);

//Piechnat: dzięki wielkie, pomogło ;)

0

A próbowałeś dużo prościej?
[code]
TRegistry *Rejestr = new TRegistry;
Rejestr->RootKey = HKEY_CURRENT_USER;
Rejestr->OpenKey("\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", true);
AnsiString Lancuch = Rejestr->ReadString("desktop");
delete Rejestr;
[/code]
:>

0

Zapomniałem wspomnieć, że to codzi o VC++ nie mam tam zmiennych TRegistry, ew. CRegKey, ale tam tez mi nie chodzi, uzycie jest podobne jak napisałem i nic.

POMOCY!!

0

POMOCY!!

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

LPBYTE RegReadStr(HKEY hKey, LPTSTR lpSubKey, LPTSTR lpValName) {
  DWORD dwSize = 0;
  LPBYTE lpData = NULL;
  if(!RegOpenKeyEx(hKey, lpSubKey, 0, KEY_ALL_ACCESS, &hKey)) {
    RegQueryValueEx(hKey, lpValName, 0, 0, lpData, &dwSize);
    if(dwSize) {
      lpData = (LPBYTE) malloc(dwSize);
      RegQueryValueEx(hKey, lpValName, 0, 0, lpData, &dwSize);
    }
    RegCloseKey(hKey);
  }
  return lpData;
}

int main(int argc, char *argv[]) {
  LPBYTE desktop = NULL;
  desktop = RegReadStr(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", "desktop");
  printf("%s", desktop);
  free(desktop);
  getchar();
  return 0;
}

Mi to działa ale nie znam tego C dobrze więc może jest coś nie tak...

1 użytkowników online, w tym zalogowanych: 0, gości: 1