VC中程序提升管理员权限
2016-08-31 10:44
183 查看
程序的权限不够,应用管理员权限打开程序运行方可。
如何使vc程序运行时请求管理员权限?
如果是2005或者2008 就简单了,直接
(项目右键---属性---连接器---清单文件---uac执行级别 选择requireAdministrator )中文版
(project->property->Configuration Properties->Linker->Manifest File->UAC Execution Level 选择requireAdministrator)英文版
重新编译 这样你的程序直接运行就拥有管理员权限了。
代码提权
如何使vc程序运行时请求管理员权限?
如果是2005或者2008 就简单了,直接
(项目右键---属性---连接器---清单文件---uac执行级别 选择requireAdministrator )中文版
(project->property->Configuration Properties->Linker->Manifest File->UAC Execution Level 选择requireAdministrator)英文版
重新编译 这样你的程序直接运行就拥有管理员权限了。
代码提权
/**************************************************************** 本类功能:提升本程序进程优先级和权限 编写作者:Coderui 编写日期:2008年03月24日 联系邮箱:coderui@163.com 作者博客:http://hi.baidu.com/coderui 文件名称:EnablePriv.h ****************************************************************/ class CEnablePriv { public: //公有(对外开放的接口) // //设置当前进程优先级为最高(实时) // BOOL SetRealTimePriority(); // //提升当前进程权限函数("SeShutdownPrivilege"关机权限) // BOOL EnableShutdownPriv(); // //提升当前进程权限函数("SeDebugPrivilege"读、写控制权限) // BOOL EnableDebugPriv(); // //提升当前进程权限函数("SeBackupPrivilege"注册表备份权限) // BOOL EnableBackupPriv(); // //提升当前进程权限函数("SeRestorePrivilege"恢复数据权限) // BOOL EnableRestorePriv(); private: //私有(内部使用的接口) }; ------------------------------------------------------------------------------------------------------------------------------ /**************************************************************** 本类功能:提升本程序进程优先级和权限 编写作者:Coderui 编写日期:2008年03月24日 联系邮箱:coderui@163.com 作者博客:http://hi.baidu.com/coderui 文件名称:EnablePriv.cpp ****************************************************************/ #include "stdafx.h" //需要引用MFC中的这个头文件 #include "EnablePriv.h" //调用时需要引用的联接头文件 //宏的功能介绍: //------------------------------------------------------------- //#define SE_BACKUP_NAME TEXT("SeBackupPrivilege") //备份数据权限 //#define SE_RESTORE_NAME TEXT("SeRestorePrivilege") //恢复数据权限 //#define SE_SHUTDOWN_NAME TEXT("SeShutdownPrivilege") //关机权限 //#define SE_DEBUG_NAME TEXT("SeDebugPrivilege") //读、写控制权限 //------------------------------------------------------------- //宏的功能介绍: //------------------------------------------------------------- //ABOVE_NORMAL_PRIORITY_CLASS(0x00008000) 高于标准 //BELOW_NORMAL_PRIORITY_CLASS(0x00004000) 低于标准 //HIGH_PRIORITY_CLASS(0x00000080) 高 //IDLE_PRIORITY_CLASS(0x00000040) 低 //NORMAL_PRIORITY_CLASS(0x00000020) 标准 //REALTIME_PRIORITY_CLASS(0x00000100) 实时 //------------------------------------------------------------- // //设置当前进程优先级为最高(实时) // //返回值:“false”是失败,“true”是成功。 BOOL CEnablePriv::SetRealTimePriority() { if( ! SetPriorityClass( GetCurrentProcess(), REALTIME_PRIORITY_CLASS )) { return false; } return true; } // //提升当前进程权限函数("SeShutdownPrivilege"关机权限) // //返回值:“false”是失败,“true”是成功。 BOOL CEnablePriv::EnableShutdownPriv() { HANDLE hToken; LUID sedebugnameValue; TOKEN_PRIVILEGES tkp; if ( ! OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) ) return false; if ( ! LookupPrivilegeValue( NULL, SE_SHUTDOWN_NAME, &sedebugnameValue ) ) { CloseHandle( hToken ); return false; } tkp.PrivilegeCount = 1; tkp.Privileges[0].Luid = sedebugnameValue; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; if ( ! AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof tkp, NULL, NULL ) ) CloseHandle( hToken ); return true; } // //提升当前进程权限函数("SeDebugPrivilege"读、写控制权限) // //返回值:“false”是失败,“true”是成功。 BOOL CEnablePriv::EnableDebugPriv() { HANDLE hToken; LUID sedebugnameValue; TOKEN_PRIVILEGES tkp; if ( ! OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) ) return false; if ( ! LookupPrivilegeValue( NULL, SE_DEBUG_NAME, &sedebugnameValue ) ) { CloseHandle( hToken ); return false; } tkp.PrivilegeCount = 1; tkp.Privileges[0].Luid = sedebugnameValue; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; if ( ! AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof tkp, NULL, NULL ) ) CloseHandle( hToken ); return true; } // //提升当前进程权限函数("SeBackupPrivilege"备份数据权限) // //返回值:“false”是失败,“true”是成功。 BOOL CEnablePriv::EnableBackupPriv() { HANDLE hToken; LUID sedebugnameValue; TOKEN_PRIVILEGES tkp; if ( ! OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) ) return false; if ( ! LookupPrivilegeValue( NULL, SE_BACKUP_NAME, &sedebugnameValue ) ) { CloseHandle( hToken ); return false; } tkp.PrivilegeCount = 1; tkp.Privileges[0].Luid = sedebugnameValue; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; if ( ! AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof tkp, NULL, NULL ) ) CloseHandle( hToken ); return true; } // //提升当前进程权限函数("SeRestorePrivilege"恢复数据权限) // //返回值:“false”是失败,“true”是成功。 BOOL CEnablePriv::EnableRestorePriv() { HANDLE hToken; LUID sedebugnameValue; TOKEN_PRIVILEGES tkp; if ( ! OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) ) return false; if ( ! LookupPrivilegeValue( NULL, SE_RESTORE_NAME, &sedebugnameValue ) ) { CloseHandle( hToken ); return false; } tkp.PrivilegeCount = 1; tkp.Privileges[0].Luid = sedebugnameValue; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; if ( ! AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof tkp, NULL, NULL ) ) CloseHandle( hToken ); return true; }
相关文章推荐
- VC++程序提升管理员权限
- VC程序提升管理员权限
- VC程序提升管理员权限
- VC如何将自身进程提升至管理员权限
- 如何在VC中通过添加资源文件,使程序在Vista上用管理员权限运行
- Win7如何提升为管理员权限,如何开机启动需要管理员权限的程序,解决win7开机不能自动运行的问题等
- VC编写vista或win7下需要管理员权限运行的程序
- VC编写vista或win7下需要管理员权限运行的程序
- 利用manifest提升程序为VISTA/WIN7管理员权限
- VC编写在windows7下以管理员权限运行的程序
- VC编写在windows7下以管理员权限运行的程序
- VC编写在windows7下以管理员权限运行的程序.
- 如何在VC中通过添加资源文件,使程序在Vista上用管理员权限运行
- VC编写vista或win7下需要管理员权限运行的程序
- VC程序自动获取windows7/vista系统管理员权限(vs2008)
- VC程序在win7系统上运行,自动获取管理员权限
- VC6 编译程序在Vista/win 7上要求管理员权限[转]
- VC2005 编译Win7以管理员权限启动的可执行程序
- 2012-11-22 11:23 vc编写以管理员权限运行的程序
- VC编写在windows7下以管理员权限运行的程序(转)