[ ghost2k3 @ 18.03.2014. 10:38 ] @
Sve te fje mi rade iz test aplikacije normalno i vracaju path koji mi treba: %user%\local\appdata\temp (mozda sam pogresio tacan path u slovo, ali nije ni bitno)

E sad kada bilo koju od onih gore fja pozovem, bilo da zelim da pristupim preko environment variable, bilo direktno iz registryja da citam, uvek mi vraca sistemske foldere. Npr. C:\Windows\Temp, i slicno ...

Jednostavno ne mogu da pristup trenutno logovanom korisniku i njegovom temp folderu, jer je process pokrenut kao sistemski (mora tako ne mogu da menjam, bonjour process)

Da li je ikako moguce iz takvog procesa ocitati vrednosti nekih varijabli koje su vezane za korisnika? Korisnik je naravno ulogovan, pokrece aplikaciju, koja pokrece bonjour service, ...

Evo primer koda: mada je ispravan, ali ako neko zeli da vidi:

Code:

char  szPath[MAX_PATH+1];
DWORD dwDataSize=MAX_PATH+1;
HKEY hkeyDXVer;
long lResult;
TCHAR qq[MAX_PATH];

memset(szPath,0,MAX_PATH+1);
lResult = RegOpenKeyEx(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\", 0, KEY_READ, &hkeyDXVer);
if(ERROR_SUCCESS == lResult)
{
    lResult = RegQueryValueEx(hkeyDXVer, L"Local AppData", NULL, NULL, (BYTE*)szPath, &dwDataSize);
    if(ERROR_SUCCESS == lResult)
    {
        }
}


Code:

        SHGetFolderPath(NULL, CSIDL_PROFILE, NULL, 0, qq);



Sav taj kod radi normalno u test aplikaciji.

Medjutim tamo gde treba da se izvrsi: prvi deo koda vraca na poziv RegQueryValueEx() = 2, sto znaci da path nije dobar, a drugi vraca neki sistemski folder, a ne %user%\..\..\

Kako mogu iz system process da dobijem user temp foler path -> to je ono krajnje sto mi treba, zbog cega sve ovo :)



Edit: kod je pisan u C, ne znam jel to pravi neku razliku u odnosu C++