Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
8573cc7f
Commit
8573cc7f
authored
Jan 30, 2000
by
Juergen Schmied
Committed by
Alexandre Julliard
Jan 30, 2000
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- fixes, loading of settings per user
- autodetecting of windows registry version
parent
f82a723a
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
141 additions
and
62 deletions
+141
-62
wine.conf.man.in
documentation/wine.conf.man.in
+10
-16
directory.c
files/directory.c
+10
-1
registry.c
misc/registry.c
+118
-37
wine.ini
wine.ini
+3
-8
No files found.
documentation/wine.conf.man.in
View file @
8573cc7f
...
@@ -118,6 +118,14 @@ default: C:\\TEMP
...
@@ -118,6 +118,14 @@ default: C:\\TEMP
Used to specify a directory where Windows applications can store
Used to specify a directory where Windows applications can store
temporary files.
temporary files.
.PP
.PP
.I format: profile = <directory>
.br
default: nothing
.br
Used to specify a directory where Windows stores special folders and the user-registry files (user.dat or ntuser.dat).
Mapped to environment variable %USERPROFILE%.
Set this value when running with a native NT or a native win95 directory with per-user settings.
.PP
.I format: path = <directories separated by semi-colons>
.I format: path = <directories separated by semi-colons>
.br
.br
default: C:\\WINDOWS;C:\\WINDOWS\\SYSTEM
default: C:\\WINDOWS;C:\\WINDOWS\\SYSTEM
...
@@ -288,23 +296,9 @@ Home registries (stored in ~user/.wine/)
...
@@ -288,23 +296,9 @@ Home registries (stored in ~user/.wine/)
.br
.br
TRY to write all changes to alt registries
TRY to write all changes to alt registries
.PP
.PP
.I format: LoadWin311RegistryFiles=<boolean>
.I format: LoadWindowsRegistryFiles=<boolean>
.br
Windows 3.1 registry files stored in windows directory
.PP
.I format: LoadWin95RegistryFiles=<boolean>
.br
.br
Windows 95 registry files stored in windows directory and c:
Load Windows registry from the current Windows directory.
.PP
.I format: LoadWinNTRegistryFiles=<boolean>
.br
Windows NT registry files stored in <windows directory>/system32/config and <windows directory>/<profiles>/user.dat. (not yet completely implemented)
.PP
.I format: NTUser=<username>
.br
Needed for building path to the user registry file: <windows directory>/profiles/<username>/ntuser.dat
.PP
To avoid interferences between all registrys you should only activate the win311, win95 or the winnt registry.
.PP
.PP
booleans: Y/y/T/t/1 are true, N/n/F/f/0 are false.
booleans: Y/y/T/t/1 are true, N/n/F/f/0 are false.
.br
.br
...
...
files/directory.c
View file @
8573cc7f
...
@@ -66,7 +66,7 @@ static int DIR_GetPath( const char *keyname, const char *defval,
...
@@ -66,7 +66,7 @@ static int DIR_GetPath( const char *keyname, const char *defval,
int
DIR_Init
(
void
)
int
DIR_Init
(
void
)
{
{
char
path
[
MAX_PATHNAME_LEN
];
char
path
[
MAX_PATHNAME_LEN
];
DOS_FULL_NAME
tmp_dir
;
DOS_FULL_NAME
tmp_dir
,
profile_dir
;
int
drive
;
int
drive
;
const
char
*
cwd
;
const
char
*
cwd
;
...
@@ -141,6 +141,15 @@ int DIR_Init(void)
...
@@ -141,6 +141,15 @@ int DIR_Init(void)
TRACE
(
"Cwd = %c:
\\
%s
\n
"
,
TRACE
(
"Cwd = %c:
\\
%s
\n
"
,
'A'
+
drive
,
DRIVE_GetDosCwd
(
drive
)
);
'A'
+
drive
,
DRIVE_GetDosCwd
(
drive
)
);
if
(
DIR_GetPath
(
"profile"
,
""
,
&
profile_dir
))
{
TRACE
(
"USERPROFILE= %s
\n
"
,
profile_dir
.
short_name
);
SetEnvironmentVariableA
(
"USERPROFILE"
,
profile_dir
.
short_name
);
}
TRACE
(
"SYSTEMROOT = %s
\n
"
,
DIR_Windows
.
short_name
);
SetEnvironmentVariableA
(
"SYSTEMROOT"
,
DIR_Windows
.
short_name
);
return
1
;
return
1
;
}
}
...
...
misc/registry.c
View file @
8573cc7f
...
@@ -1478,11 +1478,19 @@ static void SetLoadLevel(int level)
...
@@ -1478,11 +1478,19 @@ static void SetLoadLevel(int level)
/**********************************************************************************
/**********************************************************************************
* SHELL_LoadRegistry [Internal]
* SHELL_LoadRegistry [Internal]
*/
*/
#define REG_DONTLOAD -1
#define REG_WIN31 0
#define REG_WIN95 1
#define REG_WINNT 2
void
SHELL_LoadRegistry
(
void
)
void
SHELL_LoadRegistry
(
void
)
{
{
int
save_timeout
;
int
save_timeout
;
char
*
fn
,
*
home
;
char
*
fn
,
*
home
;
HKEY
hkey
;
HKEY
hkey
;
char
windir
[
MAX_PATHNAME_LEN
];
char
path
[
MAX_PATHNAME_LEN
];
int
systemtype
=
REG_WIN31
;
TRACE
(
"(void)
\n
"
);
TRACE
(
"(void)
\n
"
);
...
@@ -1491,59 +1499,132 @@ void SHELL_LoadRegistry( void )
...
@@ -1491,59 +1499,132 @@ void SHELL_LoadRegistry( void )
REGISTRY_Init
();
REGISTRY_Init
();
SetLoadLevel
(
0
);
SetLoadLevel
(
0
);
if
(
PROFILE_GetWineIniBool
(
"registry"
,
"LoadWin311RegistryFiles"
,
1
))
GetWindowsDirectoryA
(
windir
,
MAX_PATHNAME_LEN
);
{
/* Load windows 3.1 entries */
if
(
PROFILE_GetWineIniBool
(
"Registry"
,
"LoadWindowsRegistryFiles"
,
1
))
_w31_loadreg
();
{
/* test %windir%/system32/config/system --> winnt */
strcpy
(
path
,
windir
);
strncat
(
path
,
"
\\
system32
\\
config
\\
system"
,
MAX_PATHNAME_LEN
-
strlen
(
path
)
-
1
);
if
(
GetFileAttributesA
(
path
)
!=
-
1
)
{
systemtype
=
REG_WINNT
;
}
else
{
/* test %windir%/system.dat --> win95 */
strcpy
(
path
,
windir
);
strncat
(
path
,
"
\\
system.dat"
,
MAX_PATHNAME_LEN
-
strlen
(
path
)
-
1
);
if
(
GetFileAttributesA
(
path
)
!=
-
1
)
{
systemtype
=
REG_WIN95
;
}
}
if
((
systemtype
==
REG_WINNT
)
&&
(
!
PROFILE_GetWineIniString
(
"Wine"
,
"Profile"
,
""
,
path
,
MAX_PATHNAME_LEN
)))
{
MESSAGE
(
"When you are running with a native NT directory specify
\n
"
);
MESSAGE
(
"'Profile=<profiledirectory>' or disable loading of Windows
\n
"
);
MESSAGE
(
"registry (LoadWindowsRegistryFiles=N)
\n
"
);
systemtype
=
REG_DONTLOAD
;
}
}
}
if
(
PROFILE_GetWineIniBool
(
"registry"
,
"LoadWin95RegistryFiles"
,
1
))
else
{
{
/* only wine registry */
systemtype
=
REG_DONTLOAD
;
}
switch
(
systemtype
)
{
case
REG_WIN31
:
_w31_loadreg
();
break
;
case
REG_WIN95
:
/* Load windows 95 entries */
/* Load windows 95 entries */
NativeRegLoadKey
(
HKEY_LOCAL_MACHINE
,
"C:
\\
system.1st"
,
0
);
NativeRegLoadKey
(
HKEY_LOCAL_MACHINE
,
"C:
\\
system.1st"
,
0
);
NativeRegLoadKey
(
HKEY_LOCAL_MACHINE
,
"system.dat"
,
0
);
NativeRegLoadKey
(
HKEY_CURRENT_USER
,
"user.dat"
,
1
);
strcpy
(
path
,
windir
);
}
strncat
(
path
,
"
\\
system.dat"
,
MAX_PATHNAME_LEN
-
strlen
(
path
)
-
1
);
if
(
PROFILE_GetWineIniBool
(
"registry"
,
"LoadWinNTRegistryFiles"
,
1
))
NativeRegLoadKey
(
HKEY_LOCAL_MACHINE
,
path
,
0
);
{
fn
=
xmalloc
(
MAX_PATHNAME_LEN
);
if
(
PROFILE_GetWineIniString
(
"Wine"
,
"Profile"
,
""
,
path
,
MAX_PATHNAME_LEN
))
home
=
xmalloc
(
MAX_PATHNAME_LEN
);
{
if
(
PROFILE_GetWineIniString
(
"registry"
,
"NTUser"
,
""
,
home
,
MAX_PATHNAME_LEN
-
1
))
/* user specific user.dat */
strncat
(
path
,
"
\\
user.dat"
,
MAX_PATHNAME_LEN
-
strlen
(
path
)
-
1
);
if
(
!
NativeRegLoadKey
(
HKEY_CURRENT_USER
,
path
,
1
))
{
MESSAGE
(
"can't load win95 user-registry %s
\n
"
,
path
);
MESSAGE
(
"check wine.conf, section [Wine], value 'Profile'
\n
"
);
}
/* default user.dat */
if
(
!
RegCreateKeyA
(
HKEY_USERS
,
".Default"
,
&
hkey
))
{
strcpy
(
path
,
windir
);
strncat
(
path
,
"
\\
user.dat"
,
MAX_PATHNAME_LEN
-
strlen
(
path
)
-
1
);
NativeRegLoadKey
(
hkey
,
path
,
1
);
RegCloseKey
(
hkey
);
}
}
else
{
/* global user.dat */
strcpy
(
path
,
windir
);
strncat
(
path
,
"
\\
user.dat"
,
MAX_PATHNAME_LEN
-
strlen
(
path
)
-
1
);
NativeRegLoadKey
(
HKEY_CURRENT_USER
,
path
,
1
);
}
break
;
case
REG_WINNT
:
/* default user.dat */
if
(
PROFILE_GetWineIniString
(
"Wine"
,
"Profile"
,
""
,
path
,
MAX_PATHNAME_LEN
))
{
strncat
(
path
,
"
\\
ntuser.dat"
,
MAX_PATHNAME_LEN
-
strlen
(
path
)
-
1
);
if
(
!
NativeRegLoadKey
(
HKEY_CURRENT_USER
,
path
,
1
))
{
MESSAGE
(
"can't load NT user-registry %s
\n
"
,
path
);
MESSAGE
(
"check wine.conf, section [Wine], value 'Profile'
\n
"
);
}
}
/* default user.dat */
if
(
!
RegCreateKeyA
(
HKEY_USERS
,
".Default"
,
&
hkey
))
{
{
GetWindowsDirectoryA
(
fn
,
MAX_PATHNAME_LEN
);
strcpy
(
path
,
windir
);
strncat
(
fn
,
"
\\
Profiles
\\
"
,
MAX_PATHNAME_LEN
-
strlen
(
fn
)
-
1
);
strncat
(
path
,
"
\\
system32
\\
config
\\
default"
,
MAX_PATHNAME_LEN
-
strlen
(
path
)
-
1
);
strncat
(
fn
,
home
,
MAX_PATHNAME_LEN
-
strlen
(
fn
)
-
1
);
NativeRegLoadKey
(
hkey
,
path
,
1
);
strncat
(
fn
,
"
\\
ntuser.dat"
,
MAX_PATHNAME_LEN
-
strlen
(
fn
)
-
1
);
RegCloseKey
(
hkey
);
NativeRegLoadKey
(
HKEY_CURRENT_USER
,
fn
,
1
);
}
}
/*
/*
* FIXME
* FIXME
* map HLM\System\ControlSet001 to HLM\System\CurrentControlSet
* map HLM\System\ControlSet001 to HLM\System\CurrentControlSet
*/
*/
GetSystemDirectoryA
(
fn
,
MAX_PATHNAME_LEN
);
strcpy
(
home
,
fn
);
strcpy
(
path
,
windir
);
strncat
(
home
,
"
\\
config
\\
system"
,
MAX_PATHNAME_LEN
-
strlen
(
home
)
-
1
);
strncat
(
path
,
"
\\
system32
\\
config
\\
system"
,
MAX_PATHNAME_LEN
-
strlen
(
path
)
-
1
);
NativeRegLoadKey
(
HKEY_LOCAL_MACHINE
,
home
,
0
);
NativeRegLoadKey
(
HKEY_LOCAL_MACHINE
,
path
,
0
);
strcpy
(
home
,
fn
);
strcpy
(
path
,
windir
);
strncat
(
home
,
"
\\
config
\\
software"
,
MAX_PATHNAME_LEN
-
strlen
(
home
)
-
1
);
strncat
(
path
,
"
\\
system32
\\
config
\\
software"
,
MAX_PATHNAME_LEN
-
strlen
(
path
)
-
1
);
NativeRegLoadKey
(
HKEY_LOCAL_MACHINE
,
home
,
0
);
NativeRegLoadKey
(
HKEY_LOCAL_MACHINE
,
path
,
0
);
strcpy
(
home
,
fn
);
strcpy
(
path
,
windir
);
strncat
(
home
,
"
\\
config
\\
sam"
,
MAX_PATHNAME_LEN
-
strlen
(
home
)
-
1
);
strncat
(
path
,
"
\\
system32
\\
config
\\
sam"
,
MAX_PATHNAME_LEN
-
strlen
(
path
)
-
1
);
NativeRegLoadKey
(
HKEY_LOCAL_MACHINE
,
home
,
0
);
NativeRegLoadKey
(
HKEY_LOCAL_MACHINE
,
path
,
0
);
strcpy
(
home
,
fn
);
strcpy
(
path
,
windir
);
strncat
(
home
,
"
\\
config
\\
security"
,
MAX_PATHNAME_LEN
-
strlen
(
home
)
-
1
);
strncat
(
path
,
"
\\
system32
\\
config
\\
security"
,
MAX_PATHNAME_LEN
-
strlen
(
path
)
-
1
);
NativeRegLoadKey
(
HKEY_LOCAL_MACHINE
,
home
,
0
);
NativeRegLoadKey
(
HKEY_LOCAL_MACHINE
,
path
,
0
);
free
(
home
);
free
(
fn
);
/* this key is generated when the nt-core booted successfully */
/* this key is generated when the nt-core booted successfully */
if
(
!
RegCreateKeyA
(
HKEY_LOCAL_MACHINE
,
"System
\\
Clone"
,
&
hkey
))
if
(
!
RegCreateKeyA
(
HKEY_LOCAL_MACHINE
,
"System
\\
Clone"
,
&
hkey
))
RegCloseKey
(
hkey
);
RegCloseKey
(
hkey
);
}
break
;
}
/* switch */
if
(
PROFILE_GetWineIniBool
(
"registry"
,
"LoadGlobalRegistryFiles"
,
1
))
if
(
PROFILE_GetWineIniBool
(
"registry"
,
"LoadGlobalRegistryFiles"
,
1
))
{
{
/*
/*
...
...
wine.ini
View file @
8573cc7f
...
@@ -54,6 +54,7 @@ Windows=c:\windows
...
@@ -54,6 +54,7 @@ Windows=c:\windows
System
=
c:
\w
indows
\s
ystem
System
=
c:
\w
indows
\s
ystem
Temp
=
e:
\
Temp
=
e:
\
Path=c:
\w
indows;c:
\w
indows
\s
ystem;e:
\;
e:
\t
est;f:
\
Path=c:
\w
indows;c:
\w
indows
\s
ystem;e:
\;
e:
\t
est;f:
\
Profile=c:
\w
indows
\P
rofiles
\A
dministrator
SymbolTableFile
=
./wine.sym
SymbolTableFile
=
./wine.sym
# <wineconf>
# <wineconf>
...
@@ -148,6 +149,8 @@ LoadGlobalRegistryFiles=Y
...
@@ -148,6 +149,8 @@ LoadGlobalRegistryFiles=Y
LoadHomeRegistryFiles
=
Y
LoadHomeRegistryFiles
=
Y
; Load above registries.
; Load above registries.
LoadAltRegistryFiles
=
Y
LoadAltRegistryFiles
=
Y
; Load Windows registries from the Windows directory
LoadWindowsRegistryFiles
=
Y
; TRY to write all changes to home registries
; TRY to write all changes to home registries
WritetoHomeRegistryFiles
=
Y
WritetoHomeRegistryFiles
=
Y
; TRY to write all changes to alt registries
; TRY to write all changes to alt registries
...
@@ -157,14 +160,6 @@ UseNewFormat=N
...
@@ -157,14 +160,6 @@ UseNewFormat=N
; Registry periodic save timeout in seconds
; Registry periodic save timeout in seconds
; PeriodicSave=600
; PeriodicSave=600
; Windows registries in windows path
LoadWin311RegistryFiles
=
Y
LoadWin95RegistryFiles
=
Y
LoadWinNTRegistryFiles
=
N
;user the private registry is taken from
;(profiles/<username>/ntuser.dat)
;NTUser=username
[Tweak.Layout]
[Tweak.Layout]
;; WineLook=xxx (supported styles are 'Win31'(default), 'Win95', 'Win98')
;; WineLook=xxx (supported styles are 'Win31'(default), 'Win95', 'Win98')
;WineLook=Win95
;WineLook=Win95
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment