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
a8367f1d
Commit
a8367f1d
authored
Aug 11, 2021
by
Zebediah Figura
Committed by
Alexandre Julliard
Aug 11, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
kernelbase: Do not map HKEY_PERFORMANCE_DATA to \Registry\PerfData.
Signed-off-by:
Zebediah Figura
<
zfigura@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
7817238a
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
29 additions
and
27 deletions
+29
-27
registry.c
dlls/advapi32/tests/registry.c
+9
-14
security.c
dlls/advapi32/tests/security.c
+1
-1
registry.c
dlls/kernelbase/registry.c
+19
-12
No files found.
dlls/advapi32/tests/registry.c
View file @
a8367f1d
...
...
@@ -3903,26 +3903,21 @@ static void test_performance_keys(void)
todo_wine
ok
(
ret
==
ERROR_INVALID_HANDLE
,
"got %u
\n
"
,
ret
);
ret
=
RegOpenKeyA
(
keys
[
i
],
"Global"
,
&
key
);
todo_wine_if
(
keys
[
i
]
==
HKEY_PERFORMANCE_DATA
)
ok
(
ret
==
ERROR_INVALID_HANDLE
,
"got %u
\n
"
,
ret
);
ok
(
ret
==
ERROR_INVALID_HANDLE
,
"got %u
\n
"
,
ret
);
ret
=
RegOpenKeyExA
(
keys
[
i
],
"Global"
,
0
,
KEY_READ
,
&
key
);
todo_wine_if
(
keys
[
i
]
==
HKEY_PERFORMANCE_DATA
)
ok
(
ret
==
ERROR_INVALID_HANDLE
,
"got %u
\n
"
,
ret
);
ok
(
ret
==
ERROR_INVALID_HANDLE
,
"got %u
\n
"
,
ret
);
size
=
0
;
ret
=
RegQueryValueA
(
keys
[
i
],
"Global"
,
NULL
,
(
LONG
*
)
&
size
);
todo_wine_if
(
keys
[
i
]
==
HKEY_PERFORMANCE_DATA
)
ok
(
ret
==
ERROR_INVALID_HANDLE
,
"got %u
\n
"
,
ret
);
ok
(
ret
==
ERROR_INVALID_HANDLE
,
"got %u
\n
"
,
ret
);
ret
=
RegSetValueA
(
keys
[
i
],
"Global"
,
REG_SZ
,
"dummy"
,
5
);
todo_wine_if
(
keys
[
i
]
==
HKEY_PERFORMANCE_DATA
)
ok
(
ret
==
ERROR_INVALID_HANDLE
,
"got %u
\n
"
,
ret
);
ok
(
ret
==
ERROR_INVALID_HANDLE
,
"got %u
\n
"
,
ret
);
ret
=
RegQueryInfoKeyA
(
keys
[
i
],
NULL
,
NULL
,
NULL
,
&
key_count
,
NULL
,
NULL
,
&
value_count
,
NULL
,
NULL
,
NULL
,
NULL
);
todo_wine_if
(
keys
[
i
]
!=
HKEY_PERFORMANCE_DATA
)
ok
(
!
ret
,
"got %u
\n
"
,
ret
);
todo_wine
ok
(
!
ret
,
"got %u
\n
"
,
ret
);
todo_wine
ok
(
!
key_count
,
"got %u subkeys
\n
"
,
key_count
);
todo_wine
ok
(
value_count
==
2
,
"got %u values
\n
"
,
value_count
);
...
...
@@ -3941,7 +3936,7 @@ static void test_performance_keys(void)
}
ret
=
RegSetValueExA
(
HKEY_PERFORMANCE_DATA
,
"Global"
,
0
,
REG_SZ
,
(
const
BYTE
*
)
"dummy"
,
5
);
todo_wine
ok
(
ret
==
ERROR_INVALID_HANDLE
,
"got %u
\n
"
,
ret
);
ok
(
ret
==
ERROR_INVALID_HANDLE
,
"got %u
\n
"
,
ret
);
ret
=
RegSetValueExA
(
HKEY_PERFORMANCE_TEXT
,
"Global"
,
0
,
REG_SZ
,
(
const
BYTE
*
)
"dummy"
,
5
);
todo_wine
ok
(
ret
==
ERROR_BADKEY
,
"got %u
\n
"
,
ret
);
...
...
@@ -3952,7 +3947,7 @@ static void test_performance_keys(void)
if
(
pRegSetKeyValueW
)
{
ret
=
pRegSetKeyValueW
(
HKEY_PERFORMANCE_DATA
,
NULL
,
L"Global"
,
REG_SZ
,
L"dummy"
,
10
);
todo_wine
ok
(
ret
==
ERROR_INVALID_HANDLE
,
"got %u
\n
"
,
ret
);
ok
(
ret
==
ERROR_INVALID_HANDLE
,
"got %u
\n
"
,
ret
);
ret
=
pRegSetKeyValueW
(
HKEY_PERFORMANCE_TEXT
,
NULL
,
L"Global"
,
REG_SZ
,
L"dummy"
,
10
);
todo_wine
ok
(
ret
==
ERROR_BADKEY
,
"got %u
\n
"
,
ret
);
...
...
@@ -3962,7 +3957,7 @@ static void test_performance_keys(void)
}
ret
=
RegEnumKeyA
(
HKEY_PERFORMANCE_DATA
,
0
,
buffer
,
buffer_size
);
todo_wine
ok
(
ret
==
ERROR_INVALID_HANDLE
,
"got %u
\n
"
,
ret
);
ok
(
ret
==
ERROR_INVALID_HANDLE
,
"got %u
\n
"
,
ret
);
ret
=
RegEnumKeyA
(
HKEY_PERFORMANCE_TEXT
,
0
,
buffer
,
buffer_size
);
todo_wine
ok
(
ret
==
ERROR_NO_MORE_ITEMS
,
"got %u
\n
"
,
ret
);
...
...
@@ -4101,7 +4096,7 @@ static void test_perflib_key(void)
RtlInitUnicodeString
(
&
string
,
L"
\\
Registry
\\
PerfData"
);
InitializeObjectAttributes
(
&
attr
,
&
string
,
OBJ_CASE_INSENSITIVE
,
NULL
,
NULL
);
ret
=
NtOpenKey
((
HANDLE
*
)
&
key
,
KEY_READ
,
&
attr
);
todo_wine
ok
(
ret
==
STATUS_OBJECT_NAME_NOT_FOUND
,
"got %#x
\n
"
,
ret
);
ok
(
ret
==
STATUS_OBJECT_NAME_NOT_FOUND
,
"got %#x
\n
"
,
ret
);
free
(
buffer
);
}
...
...
dlls/advapi32/tests/security.c
View file @
a8367f1d
...
...
@@ -7948,7 +7948,7 @@ static void test_pseudo_handle_security(void)
ret
=
GetSecurityInfo
(
keys
[
i
],
SE_REGISTRY_KEY
,
DACL_SECURITY_INFORMATION
,
NULL
,
NULL
,
NULL
,
NULL
,
&
sd_ptr
);
if
(
keys
[
i
]
==
HKEY_PERFORMANCE_DATA
)
todo_wine
ok
(
ret
==
ERROR_INVALID_HANDLE
,
"key %p: got error %u
\n
"
,
keys
[
i
],
ret
);
ok
(
ret
==
ERROR_INVALID_HANDLE
,
"key %p: got error %u
\n
"
,
keys
[
i
],
ret
);
else
if
(
keys
[
i
]
==
HKEY_DYN_DATA
)
todo_wine
ok
(
ret
==
ERROR_CALL_NOT_IMPLEMENTED
||
broken
(
ret
==
ERROR_INVALID_HANDLE
)
/* <7 */
,
"key %p: got error %u
\n
"
,
keys
[
i
],
ret
);
...
...
dlls/kernelbase/registry.c
View file @
a8367f1d
...
...
@@ -56,7 +56,7 @@ static const WCHAR * const root_key_names[] =
NULL
,
/* HKEY_CURRENT_USER is determined dynamically */
L"
\\
Registry
\\
Machine"
,
L"
\\
Registry
\\
User"
,
L"
\\
Registry
\\
PerfData"
,
NULL
,
/* HKEY_PERFORMANCE_DATA is not a real key */
L"
\\
Registry
\\
Machine
\\
System
\\
CurrentControlSet
\\
Hardware Profiles
\\
Current"
,
L"
\\
Registry
\\
DynData"
};
...
...
@@ -330,21 +330,28 @@ static HKEY create_special_root_hkey( HKEY hkey, DWORD access )
/* map the hkey from special root to normal key if necessary */
static
inline
HKEY
get_special_root_hkey
(
HKEY
hkey
,
REGSAM
access
)
{
HKEY
ret
=
hkey
;
unsigned
int
index
=
HandleToUlong
(
hkey
)
-
HandleToUlong
(
HKEY_SPECIAL_ROOT_FIRST
);
DWORD
wow64_flags
=
access
&
(
KEY_WOW64_32KEY
|
KEY_WOW64_64KEY
);
if
((
HandleToUlong
(
hkey
)
>=
HandleToUlong
(
HKEY_SPECIAL_ROOT_FIRST
))
&&
(
HandleToUlong
(
hkey
)
<=
HandleToUlong
(
HKEY_SPECIAL_ROOT_LAST
)))
switch
(
HandleToUlong
(
hkey
))
{
REGSAM
mask
=
0
;
case
(
LONG
)(
LONG_PTR
)
HKEY_CLASSES_ROOT
:
if
(
wow64_flags
)
return
create_special_root_hkey
(
hkey
,
MAXIMUM_ALLOWED
|
wow64_flags
);
/* fall through */
if
(
HandleToUlong
(
hkey
)
==
HandleToUlong
(
HKEY_CLASSES_ROOT
))
mask
=
KEY_WOW64_32KEY
|
KEY_WOW64_64KEY
;
case
(
LONG
)(
LONG_PTR
)
HKEY_CURRENT_USER
:
case
(
LONG
)(
LONG_PTR
)
HKEY_LOCAL_MACHINE
:
case
(
LONG
)(
LONG_PTR
)
HKEY_USERS
:
case
(
LONG
)(
LONG_PTR
)
HKEY_CURRENT_CONFIG
:
case
(
LONG
)(
LONG_PTR
)
HKEY_DYN_DATA
:
if
(
special_root_keys
[
index
])
return
special_root_keys
[
index
];
return
create_special_root_hkey
(
hkey
,
MAXIMUM_ALLOWED
);
if
((
access
&
mask
)
||
!
(
ret
=
special_root_keys
[
HandleToUlong
(
hkey
)
-
HandleToUlong
(
HKEY_SPECIAL_ROOT_FIRST
)]))
ret
=
create_special_root_hkey
(
hkey
,
MAXIMUM_ALLOWED
|
(
access
&
mask
)
);
default:
return
hkey
;
}
return
ret
;
}
...
...
@@ -1565,7 +1572,7 @@ LSTATUS WINAPI DECLSPEC_HOTPATCH RegQueryValueExA( HKEY hkey, LPCSTR name, LPDWO
hkey
,
debugstr_a
(
name
),
reserved
,
type
,
data
,
count
,
count
?
*
count
:
0
);
if
((
data
&&
!
count
)
||
reserved
)
return
ERROR_INVALID_PARAMETER
;
if
(
hkey
!=
HKEY_PERFORMANCE_DATA
&&
!
(
hkey
=
get_special_root_hkey
(
hkey
,
0
)))
if
(
!
(
hkey
=
get_special_root_hkey
(
hkey
,
0
)))
return
ERROR_INVALID_HANDLE
;
if
(
count
)
datalen
=
*
count
;
...
...
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