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.
180 lines
5.7 KiB
180 lines
5.7 KiB
// <copyright file="NativeEnums.cs" company="Nick Lowe">
|
|
// Copyright © Nick Lowe 2009
|
|
// </copyright>
|
|
// <author>Nick Lowe</author>
|
|
// <email>nick@int-r.net</email>
|
|
// <url>http://processprivileges.codeplex.com/</url>
|
|
|
|
namespace ProcessPrivileges
|
|
{
|
|
using System;
|
|
using System.Diagnostics.CodeAnalysis;
|
|
|
|
/// <summary>
|
|
/// <para>Privilege attributes that augment a <see cref="Privilege"/> with state information.</para>
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// <para>Use the following checks to interpret privilege attributes:</para>
|
|
/// <para>
|
|
/// <c>// Privilege is disabled.<br/>if (attributes == PrivilegeAttributes.Disabled) { /* ... */ }</c>
|
|
/// </para>
|
|
/// <para>
|
|
/// <c>// Privilege is enabled.<br/>if ((attributes & PrivilegeAttributes.Enabled) == PrivilegeAttributes.Enabled) { /* ... */ }</c>
|
|
/// </para>
|
|
/// <para>
|
|
/// <c>// Privilege is removed.<br/>if ((attributes & PrivilegeAttributes.Removed) == PrivilegeAttributes.Removed) { /* ... */ }</c>
|
|
/// </para>
|
|
/// <para>To avoid having to work with a flags based enumerated type, use <see cref="ProcessExtensions.GetPrivilegeState(PrivilegeAttributes)"/> on attributes.</para>
|
|
/// </remarks>
|
|
[Flags,
|
|
SuppressMessage(
|
|
"Microsoft.Design",
|
|
"CA1008:EnumsShouldHaveZeroValue",
|
|
Justification = "Native enum."),
|
|
SuppressMessage(
|
|
"Microsoft.Usage",
|
|
"CA2217:DoNotMarkEnumsWithFlags",
|
|
Justification = "Native enum.")]
|
|
public enum PrivilegeAttributes
|
|
{
|
|
/// <summary>Privilege is disabled.</summary>
|
|
Disabled = 0,
|
|
|
|
/// <summary>Privilege is enabled by default.</summary>
|
|
EnabledByDefault = 1,
|
|
|
|
/// <summary>Privilege is enabled.</summary>
|
|
Enabled = 2,
|
|
|
|
/// <summary>Privilege is removed.</summary>
|
|
Removed = 4,
|
|
|
|
/// <summary>Privilege used to gain access to an object or service.</summary>
|
|
UsedForAccess = -2147483648
|
|
}
|
|
|
|
/// <summary>Access rights for access tokens.</summary>
|
|
[Flags,
|
|
SuppressMessage(
|
|
"Microsoft.Design",
|
|
"CA1008:EnumsShouldHaveZeroValue",
|
|
Justification = "Native enum."),
|
|
SuppressMessage("Microsoft.Usage",
|
|
"CA2217:DoNotMarkEnumsWithFlags",
|
|
Justification = "Native enum.")]
|
|
public enum TokenAccessRights
|
|
{
|
|
/// <summary>Right to attach a primary token to a process.</summary>
|
|
AssignPrimary = 0,
|
|
|
|
/// <summary>Right to duplicate an access token.</summary>
|
|
Duplicate = 1,
|
|
|
|
/// <summary>Right to attach an impersonation access token to a process.</summary>
|
|
Impersonate = 4,
|
|
|
|
/// <summary>Right to query an access token.</summary>
|
|
Query = 8,
|
|
|
|
/// <summary>Right to query the source of an access token.</summary>
|
|
QuerySource = 16,
|
|
|
|
/// <summary>Right to enable or disable the privileges in an access token.</summary>
|
|
AdjustPrivileges = 32,
|
|
|
|
/// <summary>Right to adjust the attributes of the groups in an access token.</summary>
|
|
AdjustGroups = 64,
|
|
|
|
/// <summary>Right to change the default owner, primary group, or DACL of an access token.</summary>
|
|
AdjustDefault = 128,
|
|
|
|
/// <summary>Right to adjust the session ID of an access token.</summary>
|
|
AdjustSessionId = 256,
|
|
|
|
/// <summary>Combines all possible access rights for a token.</summary>
|
|
AllAccess = AccessTypeMasks.StandardRightsRequired |
|
|
AssignPrimary |
|
|
Duplicate |
|
|
Impersonate |
|
|
Query |
|
|
QuerySource |
|
|
AdjustPrivileges |
|
|
AdjustGroups |
|
|
AdjustDefault |
|
|
AdjustSessionId,
|
|
|
|
/// <summary>Combines the standard rights required to read with <see cref="Query"/>.</summary>
|
|
Read = AccessTypeMasks.StandardRightsRead |
|
|
Query,
|
|
|
|
/// <summary>Combines the standard rights required to write with <see cref="AdjustDefault"/>, <see cref="AdjustGroups"/> and <see cref="AdjustPrivileges"/>.</summary>
|
|
Write = AccessTypeMasks.StandardRightsWrite |
|
|
AdjustPrivileges |
|
|
AdjustGroups |
|
|
AdjustDefault,
|
|
|
|
/// <summary>Combines the standard rights required to execute with <see cref="Impersonate"/>.</summary>
|
|
Execute = AccessTypeMasks.StandardRightsExecute |
|
|
Impersonate
|
|
}
|
|
|
|
[Flags]
|
|
internal enum AccessTypeMasks
|
|
{
|
|
Delete = 65536,
|
|
|
|
ReadControl = 131072,
|
|
|
|
WriteDAC = 262144,
|
|
|
|
WriteOwner = 524288,
|
|
|
|
Synchronize = 1048576,
|
|
|
|
StandardRightsRequired = 983040,
|
|
|
|
StandardRightsRead = ReadControl,
|
|
|
|
StandardRightsWrite = ReadControl,
|
|
|
|
StandardRightsExecute = ReadControl,
|
|
|
|
StandardRightsAll = 2031616,
|
|
|
|
SpecificRightsAll = 65535
|
|
}
|
|
|
|
internal enum TokenInformationClass
|
|
{
|
|
None,
|
|
TokenUser,
|
|
TokenGroups,
|
|
TokenPrivileges,
|
|
TokenOwner,
|
|
TokenPrimaryGroup,
|
|
TokenDefaultDacl,
|
|
TokenSource,
|
|
TokenType,
|
|
TokenImpersonationLevel,
|
|
TokenStatistics,
|
|
TokenRestrictedSids,
|
|
TokenSessionId,
|
|
TokenGroupsAndPrivileges,
|
|
TokenSessionReference,
|
|
TokenSandBoxInert,
|
|
TokenAuditPolicy,
|
|
TokenOrigin,
|
|
TokenElevationType,
|
|
TokenLinkedToken,
|
|
TokenElevation,
|
|
TokenHasRestrictions,
|
|
TokenAccessInformation,
|
|
TokenVirtualizationAllowed,
|
|
TokenVirtualizationEnabled,
|
|
TokenIntegrityLevel,
|
|
TokenUIAccess,
|
|
TokenMandatoryPolicy,
|
|
TokenLogonSid,
|
|
MaxTokenInfoClass
|
|
}
|
|
}
|