Index: win/sysutils.pp
===================================================================
--- win/sysutils.pp	(revision 20268)
+++ win/sysutils.pp	(working copy)
@@ -227,8 +227,13 @@
 
 Function FileOpen (Const FileName : string; Mode : Integer) : THandle;
 begin
-  result := CreateFile(PChar(FileName), dword(AccessMode[Mode and 3]),
+  if (Win32Platform = VER_PLATFORM_WIN32_NT) then
+    result := CreateFileW(PWideChar(widestring(FileName)), dword(AccessMode[Mode and 3]),
                        dword(ShareModes[(Mode and $F0) shr 4]), nil, OPEN_EXISTING,
+                       FILE_ATTRIBUTE_NORMAL, 0)
+  else
+    result := CreateFileA(PChar(FileName), dword(AccessMode[Mode and 3]),
+                       dword(ShareModes[(Mode and $F0) shr 4]), nil, OPEN_EXISTING,
                        FILE_ATTRIBUTE_NORMAL, 0);
   //if fail api return feInvalidHandle (INVALIDE_HANDLE=feInvalidHandle=-1)
 end;
@@ -245,7 +250,11 @@
 
 Function FileCreate (Const FileName : String; ShareMode : Integer; Rights : Integer) : THandle;
 begin
-  Result := CreateFile(PChar(FileName), GENERIC_READ or GENERIC_WRITE,
+  if (Win32Platform = VER_PLATFORM_WIN32_NT) then
+    Result := CreateFileW(PWideChar(widestring(FileName)), GENERIC_READ or GENERIC_WRITE,
+                       dword(ShareModes[(ShareMode and $F0) shr 4]), nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0)
+  else
+    Result := CreateFileA(PChar(FileName), GENERIC_READ or GENERIC_WRITE,
                        dword(ShareModes[(ShareMode and $F0) shr 4]), nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
 end;
 
