win7設置打開文件的權限爲管理員權限

設置當前進程的權限

BOOL CMainFrame::EnableDebugPrivilege(BOOL fEnable)
{   
 BOOL   fOK = FALSE;   
 HANDLE hToken = NULL;   
 if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken))
 { 
  TOKEN_PRIVILEGES tp; 
  tp.PrivilegeCount = 1;
  LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tp.Privileges[0].Luid);
  tp.Privileges[0].Attributes =  fEnable  ? SE_PRIVILEGE_ENABLED : 0;

  AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL);

  fOK = (GetLastError() == ERROR_SUCCESS);
  CloseHandle(hToken);
 }
 return fOK;
}

 

以下在 VS2005 中測試可行

一般應用程序需要管理員權限時,在XP下無需特殊限定,只要使用管理員登陸系統即可正常使用應用程序。win7下因爲特有的UAC驗證,所以應用程序開發需要進行特別的處理。處理過程如下:

1. 在應用程序源代碼目錄下創建 admin.manifest 文件,粘貼進如下內容保存:
  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <assemblyIdentity version="1.0.0.0"
       processorArchitecture="X86"
       name="Win7Privilege"
       type="win32"/> 
    <description>Description of your application</description>
    <!-- Identify the application security requirements. -->
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
      <security>
        <requestedPrivileges>
          <requestedExecutionLevel
            level="requireAdministrator"
            uiAccess="false"/>
        </requestedPrivileges>
      </security>
    </trustInfo>
  </assembly>

其中紅色部分請更改爲相應內容:
Win7Privilege => 你的應用程序名,例如MyProcedure

Description of your application => 你的應用程序描述信息,例如this is MyProcedure

2. 在應用程序的屬性——清單工具——“輸入和輸出”選項中,填寫“附加清單文件”項爲admin.manifest,點擊“確定”。 

3. 重新生成應用程序。


經過這樣處理的應用程序,在Win7下的非管理員賬戶下運行時,會彈出一個提示框,提示用戶該程序要求管理員權限,是否繼續運行。用戶選擇否,則程序退出;用戶選擇是,則運行的程序被賦予管理員權限。

文章來源:http://www.prm8.com/a/bianchengjingyan/vc/402/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章