Commit 156965ea authored by Alexandre Julliard's avatar Alexandre Julliard

server: Create the windows directories at startup if necessary.

parent c0f693f6
...@@ -1125,28 +1125,16 @@ done: ...@@ -1125,28 +1125,16 @@ done:
/*********************************************************************** /***********************************************************************
* init_windows_dirs * init_windows_dirs
*
* Create the windows and system directories if necessary.
*/ */
static void init_windows_dirs(void) static void init_windows_dirs(void)
{ {
static const WCHAR default_syswow64W[] = {'C',':','\\','w','i','n','d','o','w','s', static const WCHAR default_syswow64W[] = {'C',':','\\','w','i','n','d','o','w','s',
'\\','s','y','s','w','o','w','6','4',0}; '\\','s','y','s','w','o','w','6','4',0};
if (!CreateDirectoryW( DIR_Windows, NULL ) && GetLastError() != ERROR_ALREADY_EXISTS)
ERR( "directory %s could not be created, error %u\n",
debugstr_w(DIR_Windows), GetLastError() );
if (!CreateDirectoryW( DIR_System, NULL ) && GetLastError() != ERROR_ALREADY_EXISTS)
ERR( "directory %s could not be created, error %u\n",
debugstr_w(DIR_System), GetLastError() );
if (is_win64 || is_wow64) /* SysWow64 is always defined on 64-bit */ if (is_win64 || is_wow64) /* SysWow64 is always defined on 64-bit */
{ {
DIR_SysWow64 = default_syswow64W; DIR_SysWow64 = default_syswow64W;
memcpy( winevdm, default_syswow64W, sizeof(default_syswow64W) - sizeof(WCHAR) ); memcpy( winevdm, default_syswow64W, sizeof(default_syswow64W) - sizeof(WCHAR) );
if (!CreateDirectoryW( DIR_SysWow64, NULL ) && GetLastError() != ERROR_ALREADY_EXISTS)
ERR( "directory %s could not be created, error %u\n",
debugstr_w(DIR_SysWow64), GetLastError() );
} }
} }
......
...@@ -1866,6 +1866,14 @@ void init_registry(void) ...@@ -1866,6 +1866,14 @@ void init_registry(void)
/* start the periodic save timer */ /* start the periodic save timer */
set_periodic_save_timer(); set_periodic_save_timer();
/* create windows directories */
if (!mkdir( "drive_c/windows", 0777 ))
{
mkdir( "drive_c/windows/system32", 0777 );
if (prefix_type == PREFIX_64BIT) mkdir( "drive_c/windows/syswow64", 0777 );
}
/* go back to the server dir */ /* go back to the server dir */
if (fchdir( server_dir_fd ) == -1) fatal_error( "chdir to server dir: %s\n", strerror( errno )); if (fchdir( server_dir_fd ) == -1) fatal_error( "chdir to server dir: %s\n", strerror( errno ));
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment