]> git.ipfire.org Git - thirdparty/qemu.git/blobdiff - qga/vss-win32/install.cpp
qga-win: Handle VSS_E_PROVIDER_ALREADY_REGISTERED error
[thirdparty/qemu.git] / qga / vss-win32 / install.cpp
index 6713e58670f3ff0626f8b2cb82520a4c24629a21..a4568413601e6f2b765c8c530f869bfd1b6f704c 100644 (file)
@@ -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");
     }