switch to use policy manager apis for detecting graphing policy

This commit is contained in:
Stephanie Anderl 2020-08-03 13:37:54 -07:00
commit 4ed6e8727c
2 changed files with 10 additions and 19 deletions

View file

@ -9,10 +9,13 @@
using namespace CalculatorApp; using namespace CalculatorApp;
using namespace CalculatorApp::Common; using namespace CalculatorApp::Common;
using namespace Concurrency;
using namespace Platform; using namespace Platform;
using namespace Platform::Collections; using namespace Platform::Collections;
using namespace std; using namespace std;
using namespace Windows::Foundation::Collections; using namespace Windows::Foundation::Collections;
using namespace Windows::Management::Policies;
using namespace Windows::System;
namespace UCM = UnitConversionManager; namespace UCM = UnitConversionManager;
@ -85,25 +88,12 @@ bool IsGraphingModeEnabled()
return _isGraphingModeEnabledCached->Value; return _isGraphingModeEnabledCached->Value;
} }
DWORD allowGraphingCalculator{ 0 }; User ^ firstUser;
DWORD bufferSize{ sizeof(allowGraphingCalculator) }; create_task(User::FindAllAsync(UserType::LocalUser)).then([&firstUser](IVectorView<User ^> ^ users) {
// Make sure to call RegGetValueW only on Windows 10 1903+ firstUser = users->GetAt(0); }).wait();
if (RegGetValueW( auto namedPolicyData = NamedPolicy::GetPolicyFromPathForUser(firstUser, L"Education", L"AllowGraphingCalculator");
HKEY_CURRENT_USER, _isGraphingModeEnabledCached = namedPolicyData->GetBoolean() == true;
L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Calculator",
L"AllowGraphingCalculator",
RRF_RT_DWORD, // RRF_RT_DWORD == RRF_RT_REG_DWORD | RRF_RT_REG_BINARY
nullptr,
reinterpret_cast<LPBYTE>(&allowGraphingCalculator),
&bufferSize)
== ERROR_SUCCESS)
{
_isGraphingModeEnabledCached = allowGraphingCalculator != 0;
}
else
{
_isGraphingModeEnabledCached = true;
}
return _isGraphingModeEnabledCached->Value; return _isGraphingModeEnabledCached->Value;
} }

View file

@ -41,6 +41,7 @@
#include "winrt/Windows.System.UserProfile.h" #include "winrt/Windows.System.UserProfile.h"
#include "winrt/Windows.UI.Xaml.h" #include "winrt/Windows.UI.Xaml.h"
#include "winrt/Windows.Foundation.Metadata.h" #include "winrt/Windows.Foundation.Metadata.h"
#include "winrt/Windows.Management.Policies.h"
// The following namespaces exist as a convenience to resolve // The following namespaces exist as a convenience to resolve
// ambiguity for Windows types in the Windows::UI::Xaml::Automation::Peers // ambiguity for Windows types in the Windows::UI::Xaml::Automation::Peers