2010-06-09 154 views
2

我有一個Windows窗體應用程序正在修改軟件部分下的某些註冊表項。 Vista非管理員抱怨說他們正在收到權限錯誤。我做了什麼,它在這個帖子中稱:註冊表訪問問題

Requested registry access is not allowed

創建一個app.manifest文件並粘貼什麼在那裏說。我需要這些值對準我的應用程序:

<assemblyIdentity version="1.0.0.0" name="MyApplication.app" /> 

此外,當我在釋放模式編譯,我只看到了* .vshost.manifest,而不是* .manifest的文件。我嘗試重命名vshost,但如果我不是管理員,它仍然不起作用。

我想我在這裏問的是如何部署這個清單文件?我搜索谷歌它,但無法找到任何好的信息。

+0

@James,我似乎記得應用程序開發人員被指示將永久應用程序狀態存儲在註冊表中。不知道這是否改變,但知道MS ... – Lazarus 2010-06-09 11:41:13

+0

@詹姆斯:即使是由管理員運行的應用程序需要提升特權寫入註冊表或做類似的事 – abatishchev 2010-06-09 11:44:00

回答

2

在你指的是其他職位最重要的部分是這樣的:

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
    <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
    </requestedPrivileges> 
    </security> 

通過設置requestedExecutionLevel爲「requireAdministrator」,您的應用程序將要求在啓動管理權限。這也會導致應用程序圖標顯示UAC盾圖標疊加層(告訴用戶此可執行文件需要管理員權限)。 您在輸出目錄中看不到清單文件的原因可能是因爲默認設置是將清單嵌入到可執行文件中。您可以更改此設置以創建和使用外部清單。

對於Visual Studio中的清單選項,檢查項目屬性,然後選擇配置屬性 - >清單工具 - >輸入和輸出。您可以在其中指定將包含在清單中的其他清單文件,並指定是否要嵌入清單。

希望這會有所幫助。

+0

我去項目的屬性。在應用程序下,我看到「資源」,並且有一個「manifest」文本框,並在那裏顯示「app.manifest」。有了我建立的這些設置,它只給了我.vshost。我沒有看到名爲「配置屬性」的選項卡,雖然 – 2010-06-09 12:04:42

+0

您使用的是哪個版本的Visual Studio?我的指示基於VS 2005。 – humbagumba 2010-06-09 12:37:17