[commit] r1744 - trunk/GME/MgaUtil
GMESRC Repository Notifications
gme-commit at list.isis.vanderbilt.edu
Mon Dec 19 18:42:57 CST 2011
Author: ksmyth
Date: Mon Dec 19 18:42:56 2011
New Revision: 1744
Log:
Cache elevated IMgaRegistrar to reduce number of UAC dialogs
Modified:
trunk/GME/MgaUtil/CompDlg.cpp
trunk/GME/MgaUtil/CompDlg.h
Modified: trunk/GME/MgaUtil/CompDlg.cpp
==============================================================================
--- trunk/GME/MgaUtil/CompDlg.cpp Fri Dec 9 09:25:52 2011 (r1743)
+++ trunk/GME/MgaUtil/CompDlg.cpp Mon Dec 19 18:42:56 2011 (r1744)
@@ -348,7 +348,7 @@
CComPtr<IMgaRegistrar> registrar;
HRESULT registrarHr;
if (CUACUtils::isVistaOrLater()) {
- registrarHr = CUACUtils::CreateElevatedInstance(__uuidof(MgaRegistrar), ®istrar, GetSafeHwnd());
+ registrarHr = GetElevatedRegistrar(®istrar);
}
else {
registrarHr = registrar.CoCreateInstance(OLESTR("Mga.MgaRegistrar"));
@@ -397,7 +397,7 @@
CComPtr<IMgaRegistrar> registrar;
HRESULT registrarHr;
if (CUACUtils::isVistaOrLater() && (regacc_translate(m_accessmode) != REGACCESS_USER) ) {
- registrarHr = CUACUtils::CreateElevatedInstance(__uuidof(MgaRegistrar), ®istrar);
+ registrarHr = GetElevatedRegistrar(®istrar);
}
else {
registrarHr = registrar.CoCreateInstance(OLESTR("Mga.MgaRegistrar"));
@@ -470,7 +470,7 @@
CComPtr<IMgaRegistrar> registrar;
HRESULT hr;
if (CUACUtils::isVistaOrLater()) {
- hr = CUACUtils::CreateElevatedInstance(__uuidof(MgaRegistrar), ®istrar, GetSafeHwnd());
+ hr = GetElevatedRegistrar(®istrar);
} else {
hr = registrar.CoCreateInstance(OLESTR("Mga.MgaRegistrar"));
}
@@ -485,6 +485,16 @@
}
}
+HRESULT CCompDlg::GetElevatedRegistrar(IMgaRegistrar** registrar)
+{
+ HRESULT hr = S_OK;
+ if (m_elevatedRegistrar == NULL)
+ hr = CUACUtils::CreateElevatedInstance(__uuidof(MgaRegistrar), &m_elevatedRegistrar);
+ if (m_elevatedRegistrar != NULL)
+ m_elevatedRegistrar.CopyTo(registrar);
+ return hr;
+}
+
void CCompDlg::RegisterPattern(const CString &path)
{
@@ -505,7 +515,7 @@
CComPtr<IMgaRegistrar> registrar;
HRESULT registrarHr;
if (CUACUtils::isVistaOrLater() && (acmode != REGACCESS_USER) ) {
- registrarHr = CUACUtils::CreateElevatedInstance(__uuidof(MgaRegistrar), ®istrar);
+ registrarHr = GetElevatedRegistrar(®istrar);
}
else {
registrarHr = registrar.CoCreateInstance(OLESTR("Mga.MgaRegistrar"));
Modified: trunk/GME/MgaUtil/CompDlg.h
==============================================================================
--- trunk/GME/MgaUtil/CompDlg.h Fri Dec 9 09:25:52 2011 (r1743)
+++ trunk/GME/MgaUtil/CompDlg.h Mon Dec 19 18:42:56 2011 (r1744)
@@ -63,6 +63,9 @@
void RegisterUnknownFile(const CString &path);
void UpdateEnableDisable();
+ CComPtr<IMgaRegistrar> m_elevatedRegistrar;
+ HRESULT GetElevatedRegistrar(IMgaRegistrar** registrar);
+
public:
CString paradigm;
componenttype_enum type;
More information about the gme-commit
mailing list