Click here to Skip to main content
15,888,461 members
Home / Discussions / C#
   

C#

 
QuestionRe: setting file's security to 'no delete' in code ? Pin
Eddy Vluggen28-Nov-14 8:54
professionalEddy Vluggen28-Nov-14 8:54 
AnswerRe: setting file's security to 'no delete' in code ? Pin
BillWoodruff28-Nov-14 14:11
professionalBillWoodruff28-Nov-14 14:11 
GeneralRe: setting file's security to 'no delete' in code ? Pin
Eddy Vluggen1-Dec-14 8:02
professionalEddy Vluggen1-Dec-14 8:02 
GeneralRe: setting file's security to 'no delete' in code ? Pin
Manfred Rudolf Bihy1-Dec-14 9:01
professionalManfred Rudolf Bihy1-Dec-14 9:01 
AnswerRe: setting file's security to 'no delete' in code ? Pin
Dave Kreskowiak28-Nov-14 10:24
mveDave Kreskowiak28-Nov-14 10:24 
GeneralRe: setting file's security to 'no delete' in code ? Pin
BillWoodruff28-Nov-14 14:12
professionalBillWoodruff28-Nov-14 14:12 
AnswerRe: [still unsolved as of Dec. 1] setting file's security to 'no delete' in code ? Pin
Manfred Rudolf Bihy1-Dec-14 2:02
professionalManfred Rudolf Bihy1-Dec-14 2:02 
AnswerRe: [still unsolved as of Dec. 1] setting file's security to 'no delete' in code ? Pin
Manfred Rudolf Bihy1-Dec-14 3:01
professionalManfred Rudolf Bihy1-Dec-14 3:01 
Here is a program that I ran both with elevated rights (Run as Administrator) and without elevated rights. Either way it is impossible to delete the fileTwo.

C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.DirectoryServices;
using System.IO;
using System.Security.AccessControl;
using System.Security.Principal;

namespace AppPoolEnum
{
    class Program
    {

        private static void Main(string[] args)
        {
            String filePath = @"D:\Temp\Manfred\Delete-3-Test";
            String accountName = String.Format("Administrators");

            // Create if not existant
            if (!Directory.Exists(filePath))
                Directory.CreateDirectory(filePath);

            setNoDeleteChildren(filePath, accountName);

            String fileOne = String.Format("{0}\\{1}", filePath, "File-One.txt");
            String fileTwo = String.Format("{0}\\{1}", filePath, "File-Two.txt");

            // Create the files
            File.Create(fileOne).Dispose();
            File.Create(fileTwo).Dispose();

            // Check that the two files are there
            if (File.Exists(fileOne) && File.Exists(fileTwo))
                Console.WriteLine("Both files {0} and {1} exist!", fileOne, fileTwo);

            // Set only second file to undeleteable
            setNoDeleteFile(fileTwo, accountName);

            // Try to delete the files
            File.Delete(fileOne);
            File.Delete(fileTwo);

        }

        private static void setNoDeleteFile(String path, String account)
        {
            // current security object
            FileSecurity security = File.GetAccessControl(path);

            // add rule
            security.AddAccessRule(new FileSystemAccessRule(account, FileSystemRights.Delete, AccessControlType.Deny));

            // set access
            File.SetAccessControl(path, security);
        }

        private static void setNoDeleteChildren(String path, String account)
        {
            // current security object
            DirectorySecurity security = Directory.GetAccessControl(path);

            // add rule
            security.AddAccessRule(new FileSystemAccessRule(account, FileSystemRights.DeleteSubdirectoriesAndFiles, AccessControlType.Deny));

            // set access
            Directory.SetAccessControl(path, security);
        }
    }
}


Regards,

Manfred

"I had the right to remain silent, but I didn't have the ability!"
Ron White, Comedian


GeneralRe: [still unsolved as of Dec. 1] setting file's security to 'no delete' in code ? Pin
BillWoodruff1-Dec-14 21:12
professionalBillWoodruff1-Dec-14 21:12 
GeneralRe: [still unsolved as of Dec. 1] setting file's security to 'no delete' in code ? Pin
Manfred Rudolf Bihy2-Dec-14 18:44
professionalManfred Rudolf Bihy2-Dec-14 18:44 
GeneralRe: [still unsolved as of Dec. 1] setting file's security to 'no delete' in code ? Pin
Manfred Rudolf Bihy3-Dec-14 21:17
professionalManfred Rudolf Bihy3-Dec-14 21:17 
QuestionWrite to Registry with Administrative Privileges Pin
Jassim Rahma28-Nov-14 1:36
Jassim Rahma28-Nov-14 1:36 
AnswerRe: Write to Registry with Administrative Privileges Pin
Richard MacCutchan28-Nov-14 2:50
mveRichard MacCutchan28-Nov-14 2:50 
AnswerRe: Write to Registry with Administrative Privileges Pin
Pete O'Hanlon28-Nov-14 3:17
mvePete O'Hanlon28-Nov-14 3:17 
GeneralRe: Write to Registry with Administrative Privileges Pin
Jassim Rahma28-Nov-14 9:21
Jassim Rahma28-Nov-14 9:21 
GeneralRe: Write to Registry with Administrative Privileges Pin
Richard MacCutchan28-Nov-14 22:34
mveRichard MacCutchan28-Nov-14 22:34 
GeneralRe: Write to Registry with Administrative Privileges Pin
Jassim Rahma29-Nov-14 4:57
Jassim Rahma29-Nov-14 4:57 
GeneralRe: Write to Registry with Administrative Privileges Pin
Richard MacCutchan29-Nov-14 5:02
mveRichard MacCutchan29-Nov-14 5:02 
GeneralRe: Write to Registry with Administrative Privileges Pin
Jassim Rahma30-Nov-14 9:55
Jassim Rahma30-Nov-14 9:55 
GeneralRe: Write to Registry with Administrative Privileges Pin
Richard MacCutchan30-Nov-14 21:20
mveRichard MacCutchan30-Nov-14 21:20 
AnswerRe: Write to Registry with Administrative Privileges Pin
OriginalGriff28-Nov-14 3:44
mveOriginalGriff28-Nov-14 3:44 
AnswerRe: Write to Registry with Administrative Privileges Pin
jschell30-Nov-14 6:23
jschell30-Nov-14 6:23 
QuestionDisplayAttribute.Order in Derived class Pin
Gilbert Consellado27-Nov-14 21:52
professionalGilbert Consellado27-Nov-14 21:52 
AnswerRe: DisplayAttribute.Order in Derived class Pin
Pete O'Hanlon27-Nov-14 23:27
mvePete O'Hanlon27-Nov-14 23:27 
GeneralRe: DisplayAttribute.Order in Derived class Pin
Gilbert Consellado27-Nov-14 23:59
professionalGilbert Consellado27-Nov-14 23:59 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.