Struct HACCESSTOKEN

Source
pub struct HACCESSTOKEN(/* private fields */);
Available on crate feature advapi only.
Expand description

Handle to an access token. Originally just a HANDLE.

Implementations§

Source§

impl HACCESSTOKEN

Source

pub fn AdjustTokenPrivileges(&self, new_state: DisabPriv<'_>) -> SysResult<()>

AdjustTokenPrivileges function.

§Examples
use winsafe::{self as w, prelude::*, co};

let htoken = w::HPROCESS::GetCurrentProcess()
    .OpenProcessToken(co::TOKEN::ADJUST_PRIVILEGES | co::TOKEN::QUERY)?;

let luid = w::LookupPrivilegeValue(None, co::SE_PRIV::SHUTDOWN_NAME)?;

let privs = w::TOKEN_PRIVILEGES::new(&[
    w::LUID_AND_ATTRIBUTES::new(luid, co::SE_PRIV_ATTR::ENABLED),
])?;

htoken.AdjustTokenPrivileges(w::DisabPriv::Privs(&privs))?;
Source

pub fn CheckTokenCapability( &self, capability_sid_to_check: &SID, ) -> SysResult<bool>

Source

pub fn CheckTokenMembership(&self, sid_to_check: &SID) -> SysResult<bool>

Source

pub fn DuplicateToken( &self, level: SECURITY_IMPERSONATION, ) -> SysResult<CloseHandleGuard<HACCESSTOKEN>>

DuplicateToken function.

Source

pub fn GetCurrentProcessToken() -> HACCESSTOKEN

Source

pub fn GetCurrentThreadEffectiveToken() -> HACCESSTOKEN

Source

pub fn GetTokenInformation( &self, information_class: TOKEN_INFORMATION_CLASS, ) -> SysResult<TokenInfo<'_, '_, '_, '_, '_, '_>>

GetTokenInformation function.

The returned enum variant will correspond to the passed information_class.

§Examples

Retrieving the Groups information:

use winsafe::{self as w, prelude::*, co};

let htoken = w::HPROCESS::GetCurrentProcess()
    .OpenProcessToken(co::TOKEN::QUERY)?;

let nfo = htoken.GetTokenInformation(co::TOKEN_INFORMATION_CLASS::Groups)?;
let w::TokenInfo::Groups(groups) = nfo else { unreachable!() };

for (idx, g) in groups.Groups().iter().enumerate() {
    println!("{}: {}", idx, g.Sid().unwrap());
}
Source

pub fn ImpersonateLoggedOnUser(&self) -> SysResult<()>

Source

pub fn IsTokenRestricted(&self) -> SysResult<bool>

Trait Implementations§

Source§

impl Debug for HACCESSTOKEN

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for HACCESSTOKEN

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Handle for HACCESSTOKEN

Source§

const NULL: Self

Available on crate feature kernel only.
The null, uninitialized handle; equals to 0.
Source§

const INVALID: Self

Available on crate feature kernel only.
The invalid handle; equals to -1. Read more
Source§

unsafe fn from_ptr(p: *mut c_void) -> Self

Available on crate feature kernel only.
Creates a new handle object by wrapping a pointer. Read more
Source§

unsafe fn as_mut(&mut self) -> &mut *mut c_void

Available on crate feature kernel only.
Returns a mutable reference to the underlying raw pointer. Read more
Source§

unsafe fn raw_copy(&self) -> Self

Available on crate feature kernel only.
Returns a raw copy of the underlying handle pointer. Read more
Source§

fn ptr(&self) -> *mut c_void

Available on crate feature kernel only.
Returns the underlying raw pointer. Read more
Source§

fn as_opt(&self) -> Option<&Self>

Available on crate feature kernel only.
Returns None if the handle is null or invalid, otherwise returns Some(&self). Read more
Source§

impl Hash for HACCESSTOKEN

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl LowerHex for HACCESSTOKEN

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for HACCESSTOKEN

Source§

fn eq(&self, other: &HACCESSTOKEN) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl UpperHex for HACCESSTOKEN

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for HACCESSTOKEN

Source§

impl Send for HACCESSTOKEN

Source§

impl StructuralPartialEq for HACCESSTOKEN

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.