From 9a1cf5ac6e030b45cca51dace26d662971a81119 Mon Sep 17 00:00:00 2001 From: Mike Griese Date: Thu, 9 Sep 2021 12:03:42 -0500 Subject: [PATCH] bunch of dead ends --- .../TerminalSettingsModel/ElevatedState.cpp | 4 ++-- src/cascadia/TerminalSettingsModel/FileUtils.cpp | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/cascadia/TerminalSettingsModel/ElevatedState.cpp b/src/cascadia/TerminalSettingsModel/ElevatedState.cpp index 68f1ae57b..783298b12 100644 --- a/src/cascadia/TerminalSettingsModel/ElevatedState.cpp +++ b/src/cascadia/TerminalSettingsModel/ElevatedState.cpp @@ -124,8 +124,8 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation Json::StreamWriterBuilder wbuilder; const auto content = Json::writeString(wbuilder, root); - WriteUTF8FileAtomic(_path, content, true); - // WriteUTF8File(_path, content, true); + // WriteUTF8FileAtomic(_path, content, true); + WriteUTF8File(_path, content, true); } CATCH_LOG() diff --git a/src/cascadia/TerminalSettingsModel/FileUtils.cpp b/src/cascadia/TerminalSettingsModel/FileUtils.cpp index 68e4dcd55..7c2306d68 100644 --- a/src/cascadia/TerminalSettingsModel/FileUtils.cpp +++ b/src/cascadia/TerminalSettingsModel/FileUtils.cpp @@ -128,15 +128,28 @@ namespace Microsoft::Terminal::Settings::Model // while elevated, which isn't what we want. PSID pEveryoneSid = nullptr; + PSID pAdminGroupSid = nullptr; PSID pAdminSid = nullptr; SID_IDENTIFIER_AUTHORITY SIDAuthNT = SECURITY_NT_AUTHORITY; SID_IDENTIFIER_AUTHORITY SIDAuthWorld = SECURITY_WORLD_SID_AUTHORITY; + // I thought DOMAIN_USER_RID_ADMIN might be the Builtin\Admin sid, but that returned garbage // Create a SID for the BUILTIN\Administrators group. - THROW_IF_WIN32_BOOL_FALSE(AllocateAndInitializeSid(&SIDAuthNT, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &pAdminSid)); + THROW_IF_WIN32_BOOL_FALSE(AllocateAndInitializeSid(&SIDAuthNT, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &pAdminGroupSid)); + // ? + THROW_IF_WIN32_BOOL_FALSE(AllocateAndInitializeSid(&SIDAuthNT, 1, DOMAIN_USER_RID_ADMIN, 0, 0, 0, 0, 0, 0, 0, &pAdminSid)); // Create a well-known SID for the Everyone group. THROW_IF_WIN32_BOOL_FALSE(AllocateAndInitializeSid(&SIDAuthWorld, 1, SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, &pEveryoneSid)); + // wil::unique_sid adminSid{}; + // DWORD cbSize = sizeof(SID); + // THROW_IF_WIN32_BOOL_FALSE(CreateWellKnownSid(WinAccountAdministratorSid, nullptr, adminSid.put(), &cbSize)); + + // BYTE adminSid[SECURITY_MAX_SID_SIZE] = { 0 }; + // DWORD adminSize = ARRAYSIZE(adminSid); + // auto success = CreateWellKnownSid(WinAccountAdministratorSid, nullptr, adminSid, &adminSize); + // THROW_IF_WIN32_BOOL_FALSE(success); + EXPLICIT_ACCESS ea[2]; ZeroMemory(&ea, 2 * sizeof(EXPLICIT_ACCESS)); // Grant Admins all permissions on this file