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.
61 lines
2.0 KiB
61 lines
2.0 KiB
/*****************************************************************************/
|
|
|
|
/* Copyright (c) 1999-2001 Microsoft Corporation, All Rights Reserved /
|
|
/*****************************************************************************/
|
|
|
|
/*
|
|
* CTokenPrivilege.h - header file for CTokenPrivilege class
|
|
*
|
|
* Created: 12-14-1997 by Sanjeev Surati
|
|
* (based on classes from Windows NT Security by Nik Okuntseff)
|
|
*/
|
|
|
|
#if !defined __CTOKENPRIVILEGE_H__
|
|
#define __CTOKENPRIVILEGE_H__
|
|
|
|
////////////////////////////////////////////////////////////////
|
|
//
|
|
// Class: CTokenPrivilege
|
|
//
|
|
// This class is intended to provide a wrapper for basic
|
|
// Windows NT token privilege enabling/disabling. In order
|
|
// to perform certain operations on a Windows NT box, it is
|
|
// often necessary to not only have certain privileges, but
|
|
// to turn those privileges on and off as needed (as certain
|
|
// privileges may be available but not enabled by default).
|
|
// The class needs an access token to work correctly. A
|
|
// user can either pass us one, or we will try to obtain one.
|
|
// First, we try to open a thread token (set by Impersonation),
|
|
// and if that fails, then we attempt to get the process
|
|
// level token.
|
|
//
|
|
////////////////////////////////////////////////////////////////
|
|
|
|
|
|
class CTokenPrivilege
|
|
{
|
|
// Constructors and destructor
|
|
public:
|
|
CTokenPrivilege( LPCTSTR pszPrivilegeName, HANDLE hAccessToken = INVALID_HANDLE_VALUE, LPCTSTR pszSystemName = NULL );
|
|
~CTokenPrivilege( void );
|
|
|
|
void GetPrivilegeName( CHString& strPrivilegeName );
|
|
DWORD GetPrivilegeDisplayName( CHString& strDisplayName, LPDWORD pdwLanguageId );
|
|
DWORD Enable( bool fEnable = TRUE );
|
|
|
|
// Private data members
|
|
private:
|
|
CHString m_strPrivilegeName;
|
|
CHString m_strSystemName;
|
|
HANDLE m_hAccessToken;
|
|
bool m_fClearToken;
|
|
LUID m_luid;
|
|
|
|
};
|
|
|
|
inline void CTokenPrivilege::GetPrivilegeName( CHString& strPrivilegeName )
|
|
{
|
|
m_strPrivilegeName = strPrivilegeName;
|
|
}
|
|
|
|
#endif // __CTokenPrivilege_H__
|