diff --git a/dlls/mscoree/config.c b/dlls/mscoree/config.c
index af2ccf243fa1c2c6f8f3c9e3544cf8dd452a92b1..48f12f4d53d01c606eb431b378dfa9b97d85a87d 100644
--- a/dlls/mscoree/config.c
+++ b/dlls/mscoree/config.c
@@ -34,7 +34,6 @@
 #include "cordebug.h"
 #include "wine/list.h"
 #include "mscoree_private.h"
-#include "shlwapi.h"
 
 #include "wine/debug.h"
 
@@ -664,20 +663,18 @@ HRESULT parse_config_file(LPCWSTR filename, parsed_config_file *result)
 
     init_config(result);
 
-    initresult = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
-
-    hr = SHCreateStreamOnFileW(filename, STGM_SHARE_DENY_WRITE | STGM_READ | STGM_FAILIFTHERE, &stream);
 
-    if (SUCCEEDED(hr))
-    {
-        V_VT(&var) = VT_UNKNOWN;
-        V_UNKNOWN(&var) = (IUnknown*)stream;
+    hr = CreateConfigStream(filename, &stream);
+    if (FAILED(hr))
+        return hr;
 
-        hr = parse_config(var, result);
+    initresult = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
+    V_VT(&var) = VT_UNKNOWN;
+    V_UNKNOWN(&var) = (IUnknown*)stream;
 
-        IStream_Release(stream);
-    }
+    hr = parse_config(var, result);
 
+    IStream_Release(stream);
     if (SUCCEEDED(initresult))
         CoUninitialize();