diff options
| author | zousar <[email protected]> | 2021-11-29 23:28:28 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-11-29 23:28:28 -0700 |
| commit | 93ed87e6f3c73bfb3c1a0fb8c3805173d3b5c039 (patch) | |
| tree | 649e53df1162e843646cb07f1e9c98476089ae24 /zenserver | |
| parent | Merge pull request #28 from EpicGames/non-elevated-asio (diff) | |
| parent | Address review feedback and fix issue when deploying. (diff) | |
| download | zen-93ed87e6f3c73bfb3c1a0fb8c3805173d3b5c039.tar.xz zen-93ed87e6f3c73bfb3c1a0fb8c3805173d3b5c039.zip | |
Merge pull request #30 from EpicGames/non-elevated-asio
Get zenserver running non-elevated
Diffstat (limited to 'zenserver')
| -rw-r--r-- | zenserver/config.cpp | 33 | ||||
| -rw-r--r-- | zenserver/xmake.lua | 1 | ||||
| -rw-r--r-- | zenserver/zenserver.vcxproj | 2 |
3 files changed, 33 insertions, 3 deletions
diff --git a/zenserver/config.cpp b/zenserver/config.cpp index 1e847ce3d..0a812b5a2 100644 --- a/zenserver/config.cpp +++ b/zenserver/config.cpp @@ -45,6 +45,39 @@ PickDefaultStateDirectory() return myDocumentsDir; } + 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 L""; } diff --git a/zenserver/xmake.lua b/zenserver/xmake.lua index bba9b6ba5..bffb5d9d2 100644 --- a/zenserver/xmake.lua +++ b/zenserver/xmake.lua @@ -12,7 +12,6 @@ target("zenserver") if is_plat("windows") then add_ldflags("/subsystem:console,5.02") add_ldflags("/MANIFEST:EMBED") - add_ldflags("/MANIFESTUAC:level='requireAdministrator'") add_ldflags("/LTCG") else del_files("windows/**") diff --git a/zenserver/zenserver.vcxproj b/zenserver/zenserver.vcxproj index 935979cc3..056d431cb 100644 --- a/zenserver/zenserver.vcxproj +++ b/zenserver/zenserver.vcxproj @@ -82,7 +82,6 @@ <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> <GenerateDebugInformation>true</GenerateDebugInformation> - <UACExecutionLevel>RequireAdministrator</UACExecutionLevel> <DelayLoadDLLs>projectedfslib.dll;shell32.dll</DelayLoadDLLs> </Link> </ItemDefinitionGroup> @@ -99,7 +98,6 @@ <Link> <SubSystem>Console</SubSystem> <GenerateDebugInformation>true</GenerateDebugInformation> - <UACExecutionLevel>RequireAdministrator</UACExecutionLevel> <DelayLoadDLLs>projectedfslib.dll;shell32.dll</DelayLoadDLLs> </Link> </ItemDefinitionGroup> |