diff options
| author | Sameeh Jubran <sjubran@redhat.com> | 2020-03-11 19:04:16 +0200 |
|---|---|---|
| committer | Michael Roth <mdroth@linux.vnet.ibm.com> | 2020-03-24 11:32:19 -0500 |
| commit | b2413df83348acf371c03bced9a3845bba883ed5 (patch) | |
| tree | 63f02e97c517c65353d8e916f5ff6514768d923a | |
| parent | bb1ce44b15f159b67fafc5f4b285bbf20a1961e9 (diff) | |
| download | focaccia-qemu-b2413df83348acf371c03bced9a3845bba883ed5.tar.gz focaccia-qemu-b2413df83348acf371c03bced9a3845bba883ed5.zip | |
qga-win: Handle VSS_E_PROVIDER_ALREADY_REGISTERED error
This patch handles the case where VSS Provider is already registered, where in such case qga uninstalls the provider and registers it again. Signed-off-by: Sameeh Jubran <sjubran@redhat.com> Signed-off-by: Basil Salman <basil@daynix.com> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
| -rw-r--r-- | qga/vss-win32/install.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/qga/vss-win32/install.cpp b/qga/vss-win32/install.cpp index 6713e58670..a456841360 100644 --- a/qga/vss-win32/install.cpp +++ b/qga/vss-win32/install.cpp @@ -443,6 +443,17 @@ STDAPI DllRegisterServer(void) VSS_PROV_SOFTWARE, const_cast<WCHAR*>(QGA_PROVIDER_VERSION), g_gProviderVersion); + if (hr == (long int) VSS_E_PROVIDER_ALREADY_REGISTERED) { + DllUnregisterServer(); + hr = pVssAdmin->RegisterProvider(g_gProviderId, CLSID_QGAVSSProvider, + const_cast<WCHAR * > + (QGA_PROVIDER_LNAME), + VSS_PROV_SOFTWARE, + const_cast<WCHAR * > + (QGA_PROVIDER_VERSION), + g_gProviderVersion); + } + if (FAILED(hr)) { errmsg_dialog(hr, "RegisterProvider failed"); } |