2010-05-06 41 views
1

我有一個簡單的應用程序,我只是在win7(32位)上嘗試安裝程序(Innosetup)。應用程序需求提高特權在win7上運行,但不是遠景

我安裝後,桌面上的程序圖標會通過該屏幕通知用戶該應用程序需要提升權限。我認爲這是安裝程序的錯誤,並使用NSIS而不是相同的問題。

有沒有人知道爲什麼它在這臺電腦上,但不是在XP-32,WIN7-64位或Vista 64位?

如果我允許應用程序運行(答案是系統提示符),它只會出現「遇到錯誤,Windows正在尋找解決方案」的錯誤,然後關閉。

回答

0

我可以回答你的問題的至少一個:

你不會看到在XP的盾牌圖標,因爲沒有在WinXP海拔的概念。 WinXP不支持在Vista中首次引入的UAC

但是,Vista32/64和Win7-32​​/64都支持UAC,所以我無法想象爲什麼在Win7-32​​中會有不同的行爲。您是否在您測試的其他操作系統中修改了UAC設置?

0

這可能是不相關的安裝程序,但該快捷方式(您的應用程序?)

如果Windows認爲,一個快捷方式指向需要提升一個程序,它會顯示盾牌圖標覆蓋的目標。如果目標具有requireAdministrator的requestedExecutionLevel清單(如果您是admin,則爲highestAvailable),或者目標沒有「Vista」清單,並且Windows檢測到這是修補程序/安裝/安裝應用程序或應用程序與兼容性問題。

我猜你的應用程序沒有清單。如果你想刪除覆蓋,嘗試添加一個清單與requestedExecutionLevel asInvoker(不是說這將關閉虛擬化和其他兼容的東西爲該應用程序)

1

最有可能這與「程序兼容性助理」認爲你的應用程序是不兼容的(因爲您沒有指定它)並且「猜測」它需要提升。

嘗試添加正確Application Manifest,表明海拔是不需要的,而Vista和Windows 7都支持的操作系統...下面是一個例子:

<?xml version='1.0' encoding='UTF-8' standalone='yes'?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <security> 
     <requestedPrivileges> 
     <requestedExecutionLevel level="asInvoker" uiAccess="False"> 
     </requestedExecutionLevel> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 
    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
    <application> 
     <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS> 
     <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"></supportedOS> 
    </application> 
    </compatibility> 
</assembly> 
1

我上有同樣的問題和你通過NSIS安裝程序安裝的Windows 7計算機:應用程序在啓動程序和桌面快捷方式上具有「屏蔽」圖標。

我們決定將其添加這種簡單的線條來創建我們的安裝程序的腳本NSIS:

RequestExecutionLevel user 

http://nsis.sourceforge.net/Docs/Chapter4.html(搜索UAC)

希望這可以幫助解決您的問題。

相關問題