diff --git a/rtl/win/sysutils.pp b/rtl/win/sysutils.pp
index ff9ea6f3e3..8a96ef42a1 100644
--- a/rtl/win/sysutils.pp
+++ b/rtl/win/sysutils.pp
@@ -221,7 +221,7 @@ begin
         rc := WNetGetUniversalNameW (pwidechar(s), UNIVERSAL_NAME_INFO_LEVEL, buf, @size);
       end;
     if rc = NO_ERROR then
-      Result := PRemoteNameInfo(buf)^.lpUniversalName
+      Result := PRemoteNameInfoW(buf)^.lpUniversalName
     else if rc = ERROR_NOT_CONNECTED then
       Result := filename
     else
diff --git a/rtl/win/wininc/struct.inc b/rtl/win/wininc/struct.inc
index dbe2a1e494..826b190919 100644
--- a/rtl/win/wininc/struct.inc
+++ b/rtl/win/wininc/struct.inc
@@ -6458,14 +6458,35 @@ Const
      TREASSIGNBLOCKS = REASSIGN_BLOCKS;
      PREASSIGNBLOCKS = ^REASSIGN_BLOCKS;
 
-     REMOTE_NAME_INFO = record
+     REMOTE_NAME_INFOA = record
           lpUniversalName : LPTSTR;
           lpConnectionName : LPTSTR;
           lpRemainingPath : LPTSTR;
        end;
-     _REMOTE_NAME_INFO = REMOTE_NAME_INFO;
-     TREMOTENAMEINFO = REMOTE_NAME_INFO;
-     PREMOTENAMEINFO = ^REMOTE_NAME_INFO;
+     _REMOTE_NAME_INFOA = REMOTE_NAME_INFOA;
+     TREMOTENAMEINFOA = REMOTE_NAME_INFOA;
+     PREMOTENAMEINFOA = ^REMOTE_NAME_INFOA;
+
+     REMOTE_NAME_INFOW = record
+          lpUniversalName : LPWSTR;
+          lpConnectionName : LPWSTR;
+          lpRemainingPath : LPWSTR;
+       end;
+     _REMOTE_NAME_INFOW = REMOTE_NAME_INFOW;
+     TREMOTENAMEINFOW = REMOTE_NAME_INFOW;
+     PREMOTENAMEINFOW = ^REMOTE_NAME_INFOW;
+
+{$IFNDEF UNICODE}
+     REMOTE_NAME_INFO = REMOTE_NAME_INFOA;
+     _REMOTE_NAME_INFO = REMOTE_NAME_INFOA;
+     TREMOTENAMEINFO = REMOTE_NAME_INFOA;
+     PREMOTENAMEINFO = ^REMOTE_NAME_INFOA;
+{$ELSE UNICODE}
+     REMOTE_NAME_INFO = REMOTE_NAME_INFOW;
+     _REMOTE_NAME_INFO = REMOTE_NAME_INFOW;
+     TREMOTENAMEINFO = REMOTE_NAME_INFOW;
+     PREMOTENAMEINFO = ^REMOTE_NAME_INFOW;
+{$ENDIF UNICODE}
 
   (*
    TODO: OLE