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,
|
SmpConfigureAllowProtectedRenames,
|
||||||
0, //RTL_QUERY_REGISTRY_DELETE,
|
RTL_QUERY_REGISTRY_DELETE,
|
||||||
L"AllowProtectedRenames",
|
L"AllowProtectedRenames",
|
||||||
NULL,
|
NULL,
|
||||||
REG_DWORD,
|
REG_DWORD,
|
||||||
|
@ -648,7 +648,7 @@ SmpRegistryConfigurationTable[] =
|
||||||
|
|
||||||
{
|
{
|
||||||
SmpConfigureFileRenames,
|
SmpConfigureFileRenames,
|
||||||
0, //RTL_QUERY_REGISTRY_DELETE,
|
RTL_QUERY_REGISTRY_DELETE,
|
||||||
L"PendingFileRenameOperations",
|
L"PendingFileRenameOperations",
|
||||||
&SmpFileRenameList,
|
&SmpFileRenameList,
|
||||||
REG_NONE,
|
REG_NONE,
|
||||||
|
@ -658,7 +658,7 @@ SmpRegistryConfigurationTable[] =
|
||||||
|
|
||||||
{
|
{
|
||||||
SmpConfigureFileRenames,
|
SmpConfigureFileRenames,
|
||||||
0, //RTL_QUERY_REGISTRY_DELETE,
|
RTL_QUERY_REGISTRY_DELETE,
|
||||||
L"PendingFileRenameOperations2",
|
L"PendingFileRenameOperations2",
|
||||||
&SmpFileRenameList,
|
&SmpFileRenameList,
|
||||||
REG_NONE,
|
REG_NONE,
|
||||||
|
@ -1989,6 +1989,10 @@ SmpProcessFileRenames(VOID)
|
||||||
Status = RtlAdjustPrivilege(SE_RESTORE_PRIVILEGE, TRUE, FALSE, &OldState);
|
Status = RtlAdjustPrivilege(SE_RESTORE_PRIVILEGE, TRUE, FALSE, &OldState);
|
||||||
if (NT_SUCCESS(Status)) HavePrivilege = TRUE;
|
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 */
|
/* Process pending files to rename */
|
||||||
Head = &SmpFileRenameList;
|
Head = &SmpFileRenameList;
|
||||||
while (!IsListEmpty(Head))
|
while (!IsListEmpty(Head))
|
||||||
|
@ -2073,10 +2077,10 @@ SmpProcessFileRenames(VOID)
|
||||||
InformationClass);
|
InformationClass);
|
||||||
|
|
||||||
/* Check if we seem to have failed because the file was readonly */
|
/* Check if we seem to have failed because the file was readonly */
|
||||||
if ((!NT_SUCCESS(Status) &&
|
if (!NT_SUCCESS(Status) &&
|
||||||
(InformationClass == FileRenameInformation) &&
|
(InformationClass == FileRenameInformation) &&
|
||||||
(Status == STATUS_OBJECT_NAME_COLLISION) &&
|
(Status == STATUS_OBJECT_NAME_COLLISION) &&
|
||||||
(Buffer->ReplaceIfExists)))
|
Buffer->ReplaceIfExists)
|
||||||
{
|
{
|
||||||
/* Open the file for write attribute access this time... */
|
/* Open the file for write attribute access this time... */
|
||||||
DPRINT1("\nSMSS: '%wZ' => '%wZ' failed - Status == %x, Possible readonly target\n",
|
DPRINT1("\nSMSS: '%wZ' => '%wZ' failed - Status == %x, Possible readonly target\n",
|
||||||
|
|
Loading…
Reference in a new issue