Index: /trunk/src/VBox/Main/src-server/win/HostDnsServiceWin.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/win/HostDnsServiceWin.cpp	(revision 60446)
+++ /trunk/src/VBox/Main/src-server/win/HostDnsServiceWin.cpp	(revision 60447)
@@ -65,42 +65,8 @@
 
 HostDnsServiceWin::HostDnsServiceWin()
- : HostDnsMonitor(true),
-   m(NULL)
-{
-    std::auto_ptr<Data> data(new Data());
-    LONG lrc;
-
-    lrc = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
-                        L"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters",
-                        0,
-                        KEY_READ|KEY_NOTIFY,
-                        &data->hKeyTcpipParameters);
-    if (lrc != ERROR_SUCCESS)
-    {
-        LogRel(("HostDnsServiceWin: failed to open key Tcpip\\Parameters (error %d)\n", lrc));
-        return;
-    }
-
-    for (size_t i = 0; i < DATA_MAX_EVENT; ++i)
-    {
-        HANDLE h;
-
-        if (i ==  DATA_TIMER)
-            h = CreateWaitableTimer(NULL, FALSE, NULL);
-        else
-            h = CreateEvent(NULL, TRUE, FALSE, NULL);
-
-        if (h == NULL)
-        {
-            LogRel(("HostDnsServiceWin: failed to create event (error %d)\n", GetLastError()));
-            return;
-        }
-
-        data->haDataEvent[i] = h;
-    }
-
-    m = data.release();
-}
-
+ : HostDnsMonitor(true)
+{
+    m = new Data();
+}
 
 HostDnsServiceWin::~HostDnsServiceWin()
@@ -115,4 +81,41 @@
     if (m == NULL)
         return E_FAIL;
+
+    {
+        bool res = true;
+        LONG lrc = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
+                            L"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters",
+                            0,
+                            KEY_READ|KEY_NOTIFY,
+                            &m->hKeyTcpipParameters);
+        if (lrc != ERROR_SUCCESS)
+        {
+            LogRel(("HostDnsServiceWin: failed to open key Tcpip\\Parameters (error %d)\n", lrc));
+            res = false;
+        }
+        else
+        {
+            for (size_t i = 0; i < DATA_MAX_EVENT; ++i)
+            {
+                HANDLE h;
+
+                if (i ==  DATA_TIMER)
+                    h = CreateWaitableTimer(NULL, FALSE, NULL);
+                else
+                    h = CreateEvent(NULL, TRUE, FALSE, NULL);
+
+                if (h == NULL)
+                {
+                    LogRel(("HostDnsServiceWin: failed to create event (error %d)\n", GetLastError()));
+                    res = false;
+                    break;
+                }
+
+                m->haDataEvent[i] = h;
+            }
+        }
+        if(!res)
+            return E_FAIL;
+    }
 
     HRESULT hrc = HostDnsMonitor::init(virtualbox);
