2017-04-24 643 views
-2

如何以管理員身份啓動我的Qt應用程序或在需要管理員權限時獲得提示?我已經在帖子中嘗試了所有關於它的內容,其中大部分都是幾歲。沒有任何工作,每個人似乎都有不同的看法。我已經下載了Windows SDK以獲取mt.exe,創建了清單文件,RC文件和其他所有方法,包括右鍵單擊並將應用程序設置爲以管理員模式啓動。沒有任何工作。我需要它,因爲我的程序中的任務需要管理員權限。 QFile :: errorString()表示訪問被拒絕。有誰知道如何使這項工作?如何在Qt中以管理員身份運行應用程序

+0

這不依賴於Qt,但在你的操作系統上,你應該給他們管理權限給你的可執行文件 – eyllanesc

+0

@eyllanesc我這樣做了。它仍然沒有工作。 – equati0n

+0

@eyllanesc我有一個防病毒程序,我把一些文件放在我的C盤上。我希望能夠刪除它們。這些文件不會被刪除。訪問被拒絕。在其他位置刪除單個文件可以正常工作。 – equati0n

回答

1

好吧,所以我找到了我的問題的答案。我之前找到了一些解決方案,但他們沒有工作。我發現他們不工作的原因。原因很愚蠢:這是因爲我的文件所在的文件夾在第一個和第二個詞之間有一個空格,就像(我的應用程序)那樣會導致無法找到位置的錯誤。應該是(myapp)沒有空間。沒有找到有關位置的錯誤只在嘗試添加adim特權時發生。否則一切工作正常,沒有錯誤。所以這裏是解決方案,並確保文件夾名稱中沒有空格。

1)創建rc文件:打開記事本並粘貼以下文本然後 將文件另存爲yourappname.rc這將創建rc 文件。將文件放在具有所有源代碼和專業文件的文件夾中。

#include <windows.h> 
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "yourappname.exe.manifest" 

2)使用記事本創建的清單文件,粘貼下面的文本,並將其保存爲 和yourappname.exe.manifest把它在相同的位置之上。

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <assemblyIdentity version="2.0.0.0" processorArchitecture="X86" 
    name="yourappname.yourappname" type="win32" /> 
    <description>A discription of your app</description> 
    <dependency /> 
    <!-- Identify the application security requirements. --> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
     <requestedPrivileges> 
     <requestedExecutionLevel 
      level="requireAdministrator" 
      uiAccess="false"/> 
     </requestedPrivileges> 
     </security> 
    </trustInfo> 
</assembly> 

3)在你的親文件把下面的文字:

win32 { 
    RC_FILE = yourappname.rc 
} 

就是這樣。現在您的應用程序應以管理員權限開始。

也有類似的帖子來描述這個過程。只要確保 文件夾名稱中沒有空格,否則它將不起作用。你也必須用 管理員權限運行qt才能工作。右鍵單擊Qt並在嘗試編譯之前以 管理員身份運行。

0

要獲得需要管理員提示顯示,我只是簡單地添加

QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\" 

到我的qmake的文件。我一直在我的項目中使用它。

+0

錯誤:/ MANIFESTUAC:level ='requireAdministrator'uiAccess ='false':沒有這樣的文件或目錄 – equati0n

相關問題