SHGetSpecialFolderPath crashed unter Vista?



  • greetz,
    ich verwende diesen Code um den anwendungsdaten ordner zu bekommen:

    SHGetSpecialFolderPath(NULL, szDllPath, CSIDL_APPDATA, 1);
    

    klappt auch super unter xp, aber unter vista crashed es. Ich kann nicht genau sagen(hab kein Vista), ob es hier schon crashed oder erst wenn szDLlPath verwendet wird, jedenfalls liegt es daran.



  • ich glaube eher nicht, dass es daran liegt, ansonsten kann es nur noch an meiner Funktion liegen, welche eine Ressource extract:

    HANDLE resourceLoaded;
        TCHAR *buffer = NULL;
        unsigned fileSize, bytesWritten;
        bool result;
        HANDLE file;
        HRSRC resource = FindResource(NULL, MAKEINTRESOURCE(ResourceId), ResourceType.c_str());
    
        if(resource != NULL)
        {
            resourceLoaded = LoadResource(NULL, resource);
            if(resourceLoaded != NULL)        
            {
                buffer = (TCHAR*)LockResource(resourceLoaded);            
                if (buffer != NULL)            
                {                
                    fileSize = SizeofResource(NULL, resource),
                    file = CreateFile(filename.c_str(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    
                    if(file != INVALID_HANDLE_VALUE)
                    {
                        result = WriteFile(file, buffer, fileSize, (LPDWORD)&bytesWritten, NULL) != 0;
                        CloseHandle(file);
                        return result;
                    }
                }
            }
        }
        return false;
    

    klappt super unter xp aber mit Vista gibt es Probleme 😞


  • Mod

    Ich sehe so kein Problem. Nur der cast hier ist Unfug.

    result = WriteFile(file, buffer, fileSize, (LPDWORD)&bytesWritten, NULL) != 0;
    

    Definiere bytesWritten als DWORD und Du kannst Dir die casts sparen.

    Was crashed? Wo?
    Oder schreibt er nur nicht?
    Was sagt GetLastError?
    Kann es sen, dass Du unter Vista in das Programmverzeichnis schreiben willst?


Anmelden zum Antworten