VC程式提升管理員許可權
程式的許可權不夠,應用管理員許可權開啟程式執行方可。
如何使vc程式執行時請求管理員許可權?
如果是2005或者2008 就簡單了,直接專案右鍵---屬性---聯結器---清單檔案---uac執行級別 選擇requireAdministrator 重新編譯 這樣你的程式直接執行就擁有管理員許可權了。
/****************************************************************
本類功能:提升本程式程序優先順序和許可權
編寫作者:Coderui
編寫日期:2008年03月24日
聯絡郵箱:[email protected]
作者部落格:
檔名稱: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;
}
相關推薦
VC程式提升管理員許可權
程式的許可權不夠,應用管理員許可權開啟程式執行方可。 如何使vc程式執行時請求管理員許可權? 如果是2005或者2008 就簡單了,直接專案右鍵---屬性---聯結器---清單檔案---uac執行級別 選擇requireAdministrator 重新編譯 這樣你的程式
VC程式獲取管理員許可權
一: 編譯程式的時候設定一下 在專案屬性–聯結器–清單檔案–UAC執行級別改為requireAdministrator 二: void GainAdminPrivileges(CString strApp, UINT idd) { CStri
vc程式以管理員許可權執行方法
由於剛剛做的小程式需要使用管理員許可權執行,有時候執行的時候忘記了以管理員身份執行就無法看到正常的結果。為了讓客戶在執行的時候自動以管理員身份執行,百度一下,新增上管理員執行限制 方法一: 1找到VS2010的快捷方式:右擊——“開啟檔案位置” 找到VS2010的啟動專案d
CMAKE給VS程式新增管理員許可權
#關閉控制檯視窗 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS") SET(
golang windows程式獲取管理員許可權(UAC )
在windows上執行有關係統設定命令的時候需要管理員許可權才能操作,比如修改網絡卡的禁用、啟用狀態。雙擊執行是不能正確執行命令的,只有右鍵以管理員身份執行才能成功。 為解決此問題,花了很長時間找了各種方法,最終找到一個簡單的方法,雙擊也能執行成功了。過程如下:  
QT程式以管理員許可權執行(UAC)
方案一:(僅適用於使用msvc編譯器) 在PRO檔案中新增一行指令即可, QMAKE_LFLAGS += /MANIFESTUAC:"level='requireAdministrator'uiAc
C++中應用程式獲得管理員許可權執行(圖示帶盾牌)
在vista以後的windows版本中,有些時候需要提升編譯後生成程式的許可權,即希望讓生成的程式以管理員身份執行。雖然在一般情況下,可以使用滑鼠右鍵選擇的方式來強行以管理員身份執行,但它並沒有遮蔽普通執行方式,而且普通人通常也不會使用右鍵選擇以管理員身份執行,所以必須在
Win10下應用程式預設管理員許可權執行
系統升級到win10後,普通應用程式不再預設以管理員許可權運行了。當應用程式需要訪問系統盤或調CreateFile函式進行IO驅動操作時,往往會失敗,同時,通過GetLastError函式獲取錯誤碼為5——拒絕訪問,許可權不夠。一般的解決辦法是,右鍵***.
C#程式以管理員許可權執行
在Vista 和 Windows 7 及更新版本的作業系統,增加了 UAC(使用者賬戶控制) 的安全機制,如果 UAC 被開啟,使用者即使以管理員許可權登入,其應用程式預設情況下也無法對系統目錄、系統登錄檔等可能影響系統正常執行的設定進行寫操作。這個機制大大增強了系統的安全性,但對應用程式開發者來說,我們不
VS為VC++新增UAC控制(VC程式預設管理員執行)
VS編譯連結VC++工程生成檔案預設是沒有管理員許可權的 生成的程式圖示是沒有盾牌的如圖: 如果程式需要在C盤做些寫入操作 就必須具有管理員許可權 所以需要在工程中進行設定 工程右鍵屬性 具體如圖: 確定後編譯連結 生成的程式就有了一個盾牌圖示瞭如圖: 執行程式也
VS2013編譯生成的應用程式以管理員許可權執行
有時候由於程式中某些功能的需要(例如修改登錄檔,讀寫c盤裡的檔案),程式需要以管理員身份執行。 在網上找了很久的資料,都是說右鍵專案,選擇“屬性”的,然後可以選擇 安全性-勾選ClickOnce安全設定什麼的,比如這篇博文,可是我找了半天也沒有找到 C
程式請求管理員許可權
1)ShellExecuteEx啟動程序提許可權 #include <stdio.h> #include<windows.h> #include<tchar.h> int _tmain(int argc,TCHAR*
win7下的UAC機制與提升管理員許可權
自己本來想寫這麼個東西。在自己寫的程式中能開啟另一個程式,而這個開啟的程式是直接以管理員身份執行的而不需要彈出什麼“是否要以管理員身份執行的對話方塊”。 那麼我們首先來看一下UAC機制。 下面這些是摘引過來的: 保護Win7安全不得不說的UAC,眾所周知,UAC是Use
讓QT程式預設管理員許可權(UAC)執行
解決方案一 在pro檔案中新增 QMAKE_LFLAGS += /MANIFESTUAC:"level='requireAdministrator'uiAccess='false'" 解決方案二 假設需要管理員許可權的程式為MyApp.exe 把MyApp.e
C#正確方式讓程式以管理員許可權啟動
應用程式可能執行在各個windows版:windowsXp,win7-32bit,win7-64bit,win8-32bit,win8-64bit.由於windows各個版本的使用者許可權的限制不同,同一個開發環境編譯出來的應用程式,拿到各個系統中執行的效果是用
使程式以管理員許可權執行(C++)
來源網站:http://blog.csdn.net/jhui163/article/details/5873027 在看射手原始碼的時候,發現這個函式,是獲取管理員許可權的。但是不知道效果如果,先發上來大家測試下。 void GainAdminPrivileges(
Qt 中執行cmd命令失敗,無許可權,需要提升程式以管理員執行 vs2013設定
程式中有些 地方 需要執行windows cmd 命令, 如 taskkill 程序命令 (QString c = "taskkill /im osk.exe /f";m_pProcess->execute(c);) 這種 命令是需要管理員身份的, 因此程式必須以管理員身份執行
vc++MCF/C++/C中怎樣讓應用程式獲得或以管理員許可權執行 ,ShellExecuteEX程式設計 --- 獲取管理員許可權
怎樣讓你的應用程式獲得管理員許可權:就是在執行開發工具如vc6.0 或vs2010時,要以管理員身份執行,這樣你的應用程式才可以繼承 解決:在vs2010等開發工具中雖然以管理員身份編譯運行了程式,可以獲得管理員許可權,但是當單獨點選Debug或release版時,又
利用ShellExecuteEx手動提升使用者特權,以管理員許可權來執行程式。win7會有UAC彈窗
#include <stdio.h> #include<windows.h> #include<tchar.h> int _tmain(int argc,TCHAR* argv[]) { SHELLEXECUTEINFO sei={sizeof(SHELLEXECUTE
利用ShellExecuteEx手動提升使用者特權,以管理員許可權來執行程式
#include <stdio.h> #include<windows.h> #include<tchar.h> int _tmain(int argc,TCHAR* argv[])