Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
fee1e38e
Commit
fee1e38e
authored
Aug 23, 2007
by
Stefan Leichter
Committed by
Alexandre Julliard
Aug 23, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ole32: Remove 'recursive registry key delete' function.
parent
acfc1175
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
6 additions
and
74 deletions
+6
-74
regsvr.c
dlls/ole32/regsvr.c
+6
-74
No files found.
dlls/ole32/regsvr.c
View file @
fee1e38e
...
...
@@ -112,9 +112,6 @@ static LONG register_key_defvalueA(HKEY base, WCHAR const *name,
char
const
*
value
);
static
LONG
register_progid
(
WCHAR
const
*
clsid
,
char
const
*
progid
,
char
const
*
name
);
static
LONG
recursive_delete_key
(
HKEY
key
);
static
LONG
recursive_delete_keyA
(
HKEY
base
,
char
const
*
name
);
/***********************************************************************
* register_interfaces
...
...
@@ -201,22 +198,12 @@ static HRESULT unregister_interfaces(struct regsvr_interface const *list)
for
(;
res
==
ERROR_SUCCESS
&&
list
->
iid
;
++
list
)
{
WCHAR
buf
[
39
];
HKEY
iid_key
;
StringFromGUID2
(
list
->
iid
,
buf
,
39
);
res
=
RegOpenKeyExW
(
interface_key
,
buf
,
0
,
KEY_READ
|
KEY_WRITE
,
&
iid_key
);
if
(
res
==
ERROR_FILE_NOT_FOUND
)
{
res
=
ERROR_SUCCESS
;
continue
;
}
if
(
res
!=
ERROR_SUCCESS
)
goto
error_close_interface_key
;
res
=
recursive_delete_key
(
iid_key
);
RegCloseKey
(
iid_key
);
if
(
res
!=
ERROR_SUCCESS
)
goto
error_close_interface_key
;
res
=
RegDeleteTreeW
(
interface_key
,
buf
);
if
(
res
==
ERROR_FILE_NOT_FOUND
)
res
=
ERROR_SUCCESS
;
}
error_close_interface_key:
RegCloseKey
(
interface_key
);
error_return:
return
res
!=
ERROR_SUCCESS
?
HRESULT_FROM_WIN32
(
res
)
:
S_OK
;
...
...
@@ -308,22 +295,15 @@ static HRESULT unregister_coclasses(struct regsvr_coclass const *list)
for
(;
res
==
ERROR_SUCCESS
&&
list
->
clsid
;
++
list
)
{
WCHAR
buf
[
39
];
HKEY
clsid_key
;
StringFromGUID2
(
list
->
clsid
,
buf
,
39
);
res
=
RegOpenKeyExW
(
coclass_key
,
buf
,
0
,
KEY_READ
|
KEY_WRITE
,
&
clsid_key
);
if
(
res
==
ERROR_FILE_NOT_FOUND
)
{
res
=
ERROR_SUCCESS
;
continue
;
}
if
(
res
!=
ERROR_SUCCESS
)
goto
error_close_coclass_key
;
res
=
recursive_delete_key
(
clsid_key
);
RegCloseKey
(
clsid_key
);
res
=
RegDeleteTreeW
(
coclass_key
,
buf
);
if
(
res
==
ERROR_FILE_NOT_FOUND
)
res
=
ERROR_SUCCESS
;
if
(
res
!=
ERROR_SUCCESS
)
goto
error_close_coclass_key
;
if
(
list
->
progid
)
{
res
=
recursive_delete_keyA
(
HKEY_CLASSES_ROOT
,
list
->
progid
);
res
=
RegDeleteTreeA
(
HKEY_CLASSES_ROOT
,
list
->
progid
);
if
(
res
==
ERROR_FILE_NOT_FOUND
)
res
=
ERROR_SUCCESS
;
if
(
res
!=
ERROR_SUCCESS
)
goto
error_close_coclass_key
;
}
}
...
...
@@ -418,54 +398,6 @@ error_close_progid_key:
}
/***********************************************************************
* recursive_delete_key
*/
static
LONG
recursive_delete_key
(
HKEY
key
)
{
LONG
res
;
WCHAR
subkey_name
[
MAX_PATH
];
DWORD
cName
;
HKEY
subkey
;
for
(;;)
{
cName
=
sizeof
(
subkey_name
)
/
sizeof
(
WCHAR
);
res
=
RegEnumKeyExW
(
key
,
0
,
subkey_name
,
&
cName
,
NULL
,
NULL
,
NULL
,
NULL
);
if
(
res
!=
ERROR_SUCCESS
&&
res
!=
ERROR_MORE_DATA
)
{
res
=
ERROR_SUCCESS
;
/* presumably we're done enumerating */
break
;
}
res
=
RegOpenKeyExW
(
key
,
subkey_name
,
0
,
KEY_READ
|
KEY_WRITE
,
&
subkey
);
if
(
res
==
ERROR_FILE_NOT_FOUND
)
continue
;
if
(
res
!=
ERROR_SUCCESS
)
break
;
res
=
recursive_delete_key
(
subkey
);
RegCloseKey
(
subkey
);
if
(
res
!=
ERROR_SUCCESS
)
break
;
}
if
(
res
==
ERROR_SUCCESS
)
res
=
RegDeleteKeyW
(
key
,
0
);
return
res
;
}
/***********************************************************************
* recursive_delete_keyA
*/
static
LONG
recursive_delete_keyA
(
HKEY
base
,
char
const
*
name
)
{
LONG
res
;
HKEY
key
;
res
=
RegOpenKeyExA
(
base
,
name
,
0
,
KEY_READ
|
KEY_WRITE
,
&
key
);
if
(
res
==
ERROR_FILE_NOT_FOUND
)
return
ERROR_SUCCESS
;
if
(
res
!=
ERROR_SUCCESS
)
return
res
;
res
=
recursive_delete_key
(
key
);
RegCloseKey
(
key
);
return
res
;
}
/***********************************************************************
* coclass list
*/
static
GUID
const
CLSID_StdOleLink
=
{
...
...
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