mirror of https://github.com/raandree/NTFSSecurity
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.1 KiB
71 lines
2.1 KiB
using System;
|
|
using System.Security.AccessControl;
|
|
using ProcessPrivileges;
|
|
using System.Diagnostics;
|
|
|
|
namespace Security2
|
|
{
|
|
public class AdjustPriviledgeException : Exception
|
|
{
|
|
public AdjustPriviledgeException(string message)
|
|
: base(message)
|
|
{ }
|
|
}
|
|
|
|
public class PrivilegeControl
|
|
{
|
|
private Process p;
|
|
|
|
public PrivilegeControl()
|
|
{
|
|
p = Process.GetCurrentProcess();
|
|
}
|
|
|
|
public PrivilegeAndAttributesCollection GetPrivileges()
|
|
{
|
|
return p.GetPrivileges();
|
|
}
|
|
|
|
public AdjustPrivilegeResult EnablePrivilege(Privilege privilege)
|
|
{
|
|
if (p.GetPrivilegeState(privilege) == PrivilegeState.Disabled)
|
|
{
|
|
AdjustPrivilegeResult result = p.EnablePrivilege(privilege);
|
|
return result;
|
|
}
|
|
else if (p.GetPrivilegeState(privilege) == PrivilegeState.Removed)
|
|
{
|
|
throw new PrivilegeNotHeldException(privilege.ToString());
|
|
}
|
|
else if (p.GetPrivilegeState(privilege) == PrivilegeState.Enabled)
|
|
{
|
|
throw new AdjustPriviledgeException("Priviledge already enabled");
|
|
}
|
|
else
|
|
{
|
|
throw new AdjustPriviledgeException("Unknown Error");
|
|
}
|
|
}
|
|
|
|
public AdjustPrivilegeResult DisablePrivilege(Privilege privilege)
|
|
{
|
|
if (p.GetPrivilegeState(privilege) == PrivilegeState.Enabled)
|
|
{
|
|
AdjustPrivilegeResult result = p.DisablePrivilege(privilege);
|
|
return result;
|
|
}
|
|
else if (p.GetPrivilegeState(privilege) == PrivilegeState.Removed)
|
|
{
|
|
throw new PrivilegeNotHeldException(privilege.ToString());
|
|
}
|
|
else if (p.GetPrivilegeState(privilege) == PrivilegeState.Disabled)
|
|
{
|
|
throw new AdjustPriviledgeException("Priviledge already disabled");
|
|
}
|
|
else
|
|
{
|
|
throw new AdjustPriviledgeException("Unknown Error");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|