aboutsummaryrefslogtreecommitdiff
path: root/zenserver
diff options
context:
space:
mode:
authorzousar <[email protected]>2022-01-18 14:18:00 -0700
committerzousar <[email protected]>2022-01-18 14:18:00 -0700
commitacc4df60e61a848a1858c69584b14a9f27f9e815 (patch)
treeca29f37a0e8f65e80991fe3b19b9720cffb6f7b0 /zenserver
parentIoRunner join error fix (diff)
downloadzen-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.cpp51
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"";