程序的权限不够,应用管理员权限打开程序运行方可。
如何使vc程序运行时请求管理员权限?

如果是2005或者2008 就简单了,直接项目右键---属性---连接器---清单文件---uac执行级别 选择requireAdministrator 重新编译 这样你的程序直接运行就拥有管理员权限了。 

 

 

 

/****************************************************************
本类功能:提升本程序进程优先级和权限
编写作者:Coderui
编写日期:2008年03月24日
作者博客: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日
作者博客: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;
 }