0

Windows权限相关操作

发表者:wenzhou1219分类:接口2016-03-29 22:04:27 阅读[606]

【1】管理员权限运行程序的几种方法包括:

1.使用API ShellExcuteEx传入runas参数

2.修改manifest文件 运行权限为requireAdministrator

3.修改工程链接配置为level=requireAdministrator,其实是修改的内嵌manifest

4.设置程序的兼容性为以管理员权限运行

【2】开启指定特权指在很多时候相应的特权被关闭,我们需要手动启用特权,常见的特权包括关机、备份等等。

【3】降权运行程序在很多安全软件中需要用到,实际上这里的降权简单的指的是程序的完整性级别,实际中降权实现要复杂一些,因为还要考虑禁用不必要的特权等等。


工具类声明如下:

class CPrivilegeMisc
{
public:
	typedef enum
	{
		RUNAS_S_OK,			//管理员权限运行成功
		RUNAS_F_DENY,		//拒绝提升权限
		RUNAS_F_NOTFOUND,	//待运行的文件不存在
		RUNAS_F_OTHER		//其他原因导致失败
	}RUNAS_RESULT;

	CPrivilegeMisc(void);
	virtual ~CPrivilegeMisc(void);

	//管理员权限运行相关
	static BOOL ShellExecute_RunAs(LPCTSTR lpFile, INT nShowCmd=SW_SHOWNORMAL, RUNAS_RESULT* pRes=NULL);
	static BOOL GetElevatedState(TOKEN_ELEVATION_TYPE* pEleType, BOOL* pIsAdmin=NULL);
	static void ChangeBtnStyleToRunas(HWND hBtn, BOOL bRunasState=TRUE);
	static HICON GetRunasIcon();

	//特权提升和调整相关操作
	static BOOL EnablePrivilege(LPTSTR pszPriv, BOOL bEnable=TRUE);
	static BOOL EnablePrivilege(HANDLE hTok, LPTSTR pszPriv, 
								BOOL bEnable=TRUE, TOKEN_PRIVILEGES* pTpOld = NULL);
	static VOID RestorePrivilege(HANDLE hTok,  TOKEN_PRIVILEGES* pTpOld );

	//强制完整性操作相关
	static BOOL CreateLowIntegrityProcess(PWSTR pszCommandLine);
	static BOOL GetProcessIntegrityLevel(PDWORD pdwIntegrityLevel);
};

演示程序界面


源码下载链接  访问密码 d62b


名字:

个人主页地址:

E-mail:

评论列表