diff options
| author | zousar <[email protected]> | 2022-01-18 14:18:00 -0700 |
|---|---|---|
| committer | zousar <[email protected]> | 2022-01-18 14:18:00 -0700 |
| commit | acc4df60e61a848a1858c69584b14a9f27f9e815 (patch) | |
| tree | ca29f37a0e8f65e80991fe3b19b9720cffb6f7b0 /zenserver | |
| parent | IoRunner join error fix (diff) | |
| download | zen-acc4df60e61a848a1858c69584b14a9f27f9e815.tar.xz zen-acc4df60e61a848a1858c69584b14a9f27f9e815.zip | |
Change default windows state dir
Default windows state dir now is C:\ProgramData\Epic\Zen\Data. Also functional for Windows Service unlike the MyDocuments directory. No longer attempt search for largest drive if MyDocuments is not available.
Diffstat (limited to 'zenserver')
| -rw-r--r-- | zenserver/config.cpp | 51 |
1 files changed, 9 insertions, 42 deletions
diff --git a/zenserver/config.cpp b/zenserver/config.cpp index eb10420c8..4cb949b0e 100644 --- a/zenserver/config.cpp +++ b/zenserver/config.cpp @@ -32,52 +32,19 @@ std::filesystem::path PickDefaultStateDirectory() { // Pick sensible default - - WCHAR myDocumentsDir[MAX_PATH]; - HRESULT hRes = SHGetFolderPathW(NULL, - CSIDL_PERSONAL /* My Documents */, - NULL, - SHGFP_TYPE_CURRENT, - /* out */ myDocumentsDir); + PWSTR programDataDir = nullptr; + HRESULT hRes = SHGetKnownFolderPath(FOLDERID_ProgramData, + 0, + NULL, + &programDataDir); if (SUCCEEDED(hRes)) { - wcscat_s(myDocumentsDir, L"\\zen"); - - return myDocumentsDir; - } + std::filesystem::path finalPath(programDataDir); + finalPath /= L"Epic\\Zen\\Data"; + ::CoTaskMemFree(programDataDir); - int CandidateDriveLetterOffset = -1; - ULARGE_INTEGER CandidateDriveSize; - CandidateDriveSize.QuadPart = 0L; - DWORD LogicalDrives = GetLogicalDrives(); - char CandidateDriveName[] = "A:\\"; - for (int DriveLetterOffset = 0; DriveLetterOffset < 32; ++DriveLetterOffset) - { - if ((LogicalDrives & (1 << DriveLetterOffset)) != 0) - { - CandidateDriveName[0] = (char)('A' + DriveLetterOffset); - if (GetDriveTypeA(CandidateDriveName) == DRIVE_FIXED) - { - ULARGE_INTEGER FreeBytesAvailableToCaller; - ULARGE_INTEGER TotalNumberOfBytes; - if (0 != GetDiskFreeSpaceExA(CandidateDriveName, &FreeBytesAvailableToCaller, &TotalNumberOfBytes, nullptr)) - { - if ((FreeBytesAvailableToCaller.QuadPart > 0) && (TotalNumberOfBytes.QuadPart > CandidateDriveSize.QuadPart)) - { - CandidateDriveLetterOffset = DriveLetterOffset; - CandidateDriveSize = TotalNumberOfBytes; - } - } - } - } - } - - if (CandidateDriveLetterOffset >= 0) - { - char RootZenFolderName[] = "A:\\zen"; - RootZenFolderName[0] = (char)('A' + CandidateDriveLetterOffset); - return RootZenFolderName; + return finalPath; } return L""; |