mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 17:34:57 +00:00
[SMSS]
- Reenable RTL_QUERY_REGISTRY_DELETE: the "PendingFileRenameOperations(2)" and "AllowProtectedRenames" registry values are deleted after being parsed: we don't retry at every reboot to remove/rename files that were already deleted/renamed. - Remove superfluous parentheses. - Warn a FIXME if SFC-protected file renames are allowed and we are processing file renames (the "protected file renames" stuff is unimplemented atm.) svn path=/trunk/; revision=70530
This commit is contained in:
parent
ae0b31a24a
commit
762e2a1af4
1 changed files with 9 additions and 5 deletions
|
@ -608,7 +608,7 @@ SmpRegistryConfigurationTable[] =
|
|||
|
||||
{
|
||||
SmpConfigureAllowProtectedRenames,
|
||||
0, //RTL_QUERY_REGISTRY_DELETE,
|
||||
RTL_QUERY_REGISTRY_DELETE,
|
||||
L"AllowProtectedRenames",
|
||||
NULL,
|
||||
REG_DWORD,
|
||||
|
@ -648,7 +648,7 @@ SmpRegistryConfigurationTable[] =
|
|||
|
||||
{
|
||||
SmpConfigureFileRenames,
|
||||
0, //RTL_QUERY_REGISTRY_DELETE,
|
||||
RTL_QUERY_REGISTRY_DELETE,
|
||||
L"PendingFileRenameOperations",
|
||||
&SmpFileRenameList,
|
||||
REG_NONE,
|
||||
|
@ -658,7 +658,7 @@ SmpRegistryConfigurationTable[] =
|
|||
|
||||
{
|
||||
SmpConfigureFileRenames,
|
||||
0, //RTL_QUERY_REGISTRY_DELETE,
|
||||
RTL_QUERY_REGISTRY_DELETE,
|
||||
L"PendingFileRenameOperations2",
|
||||
&SmpFileRenameList,
|
||||
REG_NONE,
|
||||
|
@ -1989,6 +1989,10 @@ SmpProcessFileRenames(VOID)
|
|||
Status = RtlAdjustPrivilege(SE_RESTORE_PRIVILEGE, TRUE, FALSE, &OldState);
|
||||
if (NT_SUCCESS(Status)) HavePrivilege = TRUE;
|
||||
|
||||
// FIXME: Handle SFC-protected file renames!
|
||||
if (SmpAllowProtectedRenames)
|
||||
DPRINT1("SMSS: FIXME: Handle SFC-protected file renames!\n");
|
||||
|
||||
/* Process pending files to rename */
|
||||
Head = &SmpFileRenameList;
|
||||
while (!IsListEmpty(Head))
|
||||
|
@ -2073,10 +2077,10 @@ SmpProcessFileRenames(VOID)
|
|||
InformationClass);
|
||||
|
||||
/* Check if we seem to have failed because the file was readonly */
|
||||
if ((!NT_SUCCESS(Status) &&
|
||||
if (!NT_SUCCESS(Status) &&
|
||||
(InformationClass == FileRenameInformation) &&
|
||||
(Status == STATUS_OBJECT_NAME_COLLISION) &&
|
||||
(Buffer->ReplaceIfExists)))
|
||||
Buffer->ReplaceIfExists)
|
||||
{
|
||||
/* Open the file for write attribute access this time... */
|
||||
DPRINT1("\nSMSS: '%wZ' => '%wZ' failed - Status == %x, Possible readonly target\n",
|
||||
|
|
Loading…
Reference in a new issue