|
|
|
@ -787,46 +787,23 @@ void PrintExceptionContinue(std::exception* pex, const char* pszThread)
@@ -787,46 +787,23 @@ void PrintExceptionContinue(std::exception* pex, const char* pszThread)
|
|
|
|
|
strMiscWarning = pszMessage; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef WIN32 |
|
|
|
|
typedef WINSHELLAPI BOOL (WINAPI *PSHGETSPECIALFOLDERPATHA)(HWND hwndOwner, LPSTR lpszPath, int nFolder, BOOL fCreate); |
|
|
|
|
|
|
|
|
|
string MyGetSpecialFolderPath(int nFolder, bool fCreate) |
|
|
|
|
{ |
|
|
|
|
char pszPath[MAX_PATH+100] = ""; |
|
|
|
|
|
|
|
|
|
// SHGetSpecialFolderPath isn't always available on old Windows versions
|
|
|
|
|
HMODULE hShell32 = LoadLibraryA("shell32.dll"); |
|
|
|
|
if (hShell32) |
|
|
|
|
char pszPath[MAX_PATH] = ""; |
|
|
|
|
if(SHGetSpecialFolderPathA(NULL, pszPath, nFolder, fCreate)) |
|
|
|
|
{ |
|
|
|
|
PSHGETSPECIALFOLDERPATHA pSHGetSpecialFolderPath = |
|
|
|
|
(PSHGETSPECIALFOLDERPATHA)GetProcAddress(hShell32, "SHGetSpecialFolderPathA"); |
|
|
|
|
if (pSHGetSpecialFolderPath) |
|
|
|
|
(*pSHGetSpecialFolderPath)(NULL, pszPath, nFolder, fCreate); |
|
|
|
|
FreeModule(hShell32); |
|
|
|
|
return pszPath; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Backup option
|
|
|
|
|
if (pszPath[0] == '\0') |
|
|
|
|
else if (nFolder == CSIDL_STARTUP) |
|
|
|
|
{ |
|
|
|
|
if (nFolder == CSIDL_STARTUP) |
|
|
|
|
{ |
|
|
|
|
strcpy(pszPath, getenv("USERPROFILE")); |
|
|
|
|
strcat(pszPath, "\\Start Menu\\Programs\\Startup"); |
|
|
|
|
} |
|
|
|
|
else if (nFolder == CSIDL_APPDATA) |
|
|
|
|
{ |
|
|
|
|
strcpy(pszPath, getenv("APPDATA")); |
|
|
|
|
} |
|
|
|
|
return string(getenv("USERPROFILE")) + "\\Start Menu\\Programs\\Startup"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return pszPath; |
|
|
|
|
else if (nFolder == CSIDL_APPDATA) |
|
|
|
|
{ |
|
|
|
|
return getenv("APPDATA"); |
|
|
|
|
} |
|
|
|
|
return ""; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|