Файл. Перемещение не наследовало полномочия от целевого каталога?

В случае, если что-то идет не так, как надо в создании файла, я писал во временный файл и затем перемещался к месту назначения. Что-то как:

        var destination = @"C:\foo\bar.txt";
        var tempFile = Path.GetTempFileName();
        using (var stream = File.OpenWrite(tempFile))
        {
            // write to file here here
        }

        string backupFile = null;
        try
        {
            var dir = Path.GetDirectoryName(destination);
            if (!Directory.Exists(dir))
            {
                Directory.CreateDirectory(dir);
                Util.SetPermissions(dir);
            }

            if (File.Exists(destination))
            {
                backupFile = Path.Combine(Path.GetTempPath(), new Guid().ToString());
                File.Move(destination, backupFile);
            }

            File.Move(tempFile, destination);

            if (backupFile != null)
            {
                File.Delete(backupFile);
            }
        }
        catch(IOException)
        {
            if(backupFile != null && !File.Exists(destination) && File.Exists(backupFile))
            {
                File.Move(backupFile, destination);
            }
        }

Проблема состоит в том, что новый "bar.txt" в этом случае не наследовал полномочия от каталога "C:\foo". Все же, если я создаю файл с помощью проводника/блокнота и т.д. непосредственно в "C:\foo" нет никаких проблем, таким образом, я полагаю, что полномочия правильно установлены на "C:\foo".

Обновление

Найденные Наследованные полномочия автоматически не обновляются при перемещении папок возможно, это относится к файлам также. Теперь ища способ вызвать обновление полномочий файла. Существует ли лучший способ в целом выполнения этого?

22
задан Joseph Kingry 21 June 2010 в 01:55
поделиться

1 ответ

Нашел то, что мне нужно, вот что:

var fs = File.GetAccessControl(destination);
fs.SetAccessRuleProtection(false, false);
File.SetAccessControl(destination, fs);

Это сбрасывает права доступа к файлам для наследования.

32
ответ дан 29 November 2019 в 05:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: