/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
HRESULT Registrar::UnRegisterProgID(constwchar_t* sProgram, constwchar_t* sComponent, int nVersion)
{ if (FAILED(m_ConstructionResult)) return m_ConstructionResult; wchar_t sBuf[MAX_PATH];
swprintf(sBuf, MAX_PATH, L"%s.%s.%d\\CLSID", sProgram, sComponent, nVersion); wchar_t sCurCLSID[nGUIDlen];
HRESULT hr = RegRead(HKEY_CLASSES_ROOT, sBuf, L"", sCurCLSID, nGUIDlen); if (FAILED(hr)) return hr; if (wcsncmp(sCurCLSID, m_sCLSID, nGUIDlen) != 0)
{ // The ProgID points to a different CLSID; most probably it's intercepted // by a different application, so don't remove it return S_FALSE;
}
RegDel(HKEY_CLASSES_ROOT, sBuf);
swprintf(sBuf, MAX_PATH, L"%s.%s.%d", sProgram, sComponent, nVersion);
hr = RegDel(HKEY_CLASSES_ROOT, sBuf);
wchar_t sBufKey[MAX_PATH];
swprintf(sBufKey, MAX_PATH, L"%s.%s\\CurVer", sProgram, sComponent); wchar_t sBufVal[MAX_PATH]; if (SUCCEEDED(RegRead(HKEY_CLASSES_ROOT, sBufKey, L"", sBufVal, MAX_PATH)) && (wcsncmp(sBufVal, sBuf, MAX_PATH) == 0))
{ // Only unreg default if this version is current default
RegDel(HKEY_CLASSES_ROOT, sBufKey);
swprintf(sBuf, MAX_PATH, L"%s.%s", sProgram, sComponent);
HRESULT hr1 = RegDel(HKEY_CLASSES_ROOT, sBuf); // Always return a failure result if we failed somewhere if (FAILED(hr1))
hr = hr1;
} return hr;
}
HRESULT Registrar::UnRegisterProgIDs(constwchar_t* sProgram, constwchar_t* sComponent,
std::initializer_list<int> aVersions)
{
HRESULT hr = S_OK; // Try all ProgIDs regardless of error, but make sure to return failure result if some failed for (int nVersion : aVersions)
{
HRESULT hrLast = UnRegisterProgID(sProgram, sComponent, nVersion); if (SUCCEEDED(hr))
hr = hrLast;
} return hr;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.