使用Inno-Setup,我需要由管理員用戶安裝的軟件可以由默認用戶卸載。Inno-Setup:無需管理員權限即可卸載
參數特權要求是最低,但問題依然存在。
我做了測試,在某些機器(所有這些都是Windows 7),並在幾個我可以卸載使用默認的用戶,但也有其他人並沒有讓我卸載,並要求管理員用戶。
我沒有在問題和互聯網搜索中發現模式。
安裝文件夾是C:\;
我不使用[註冊]部分並在[DIRS]部分中的所有參數都使用權限:用戶 - 修改
使用Inno-Setup,我需要由管理員用戶安裝的軟件可以由默認用戶卸載。Inno-Setup:無需管理員權限即可卸載
參數特權要求是最低,但問題依然存在。
我做了測試,在某些機器(所有這些都是Windows 7),並在幾個我可以卸載使用默認的用戶,但也有其他人並沒有讓我卸載,並要求管理員用戶。
我沒有在問題和互聯網搜索中發現模式。
安裝文件夾是C:\;
我不使用[註冊]部分並在[DIRS]部分中的所有參數都使用權限:用戶 - 修改
有要考慮幾件事情:
一般,安裝文件夾是%ProgramFiles%或%ProgramFiles(x86)%,它是受操作系統保護的文件夾。要繞過此保護,安裝程序必須更改安裝文件夾的權限以允許任何人刪除。
在[Dirs]部分,您可以使用Permissions:users-modify
(或者如果需要,甚至更寬容)。
爲[Registry]部分類似。
InnoSetup使用一種稱爲unins000.exe
用於卸載文件。該文件包含默認情況下請求特權asInvoker
的清單。據我所知,這不會因PrivilegesRequired
設置而改變。到目前爲止,asInvoker
應該沒問題。如果新版本的InnoSetup將其設置爲更高的值,只要留意它就可以了。
對於其他遊客發現這一點,並沒有使用InnoSetup:
如果不嵌入您的安裝清單,Windows將使用heuristics for installer detection (Microsoft, .pptx)。如果啓發式結果爲正,Windows將自動請求管理員提升。因此,請使用清單並請求asInvoker
權限。
安裝文件夾是C:\,我沒有使用[Registry]部分,並且[Dirs]部分中的所有參數都使用Permissions:users-modify。 –
我已經做了一些測試,它的工作,但有一些機器,我不能卸載軟件,所以我認爲有一種風景,我不考慮。 –
@RobsonPiernodeJesus:這是您應該添加到問題中的重要信息。 –
的Inno Setup的卸載程序請求的權限提升,如果安裝了具有管理員或超級用戶權限運行(無論它是否需要與PrivilegesRequired
那些明確)。
此信息被存儲在unins000.dat
的字節14C(十六進制)/ 322(十進制)。
這是一個位掩碼,其中第1位(0×01)表示管理員權限,和第7位(0×40)表示功率的用戶權限。
所以,如果你安裝的應用程序作爲管理員/高級用戶,即使安裝有PrivilegesRequired=lowest
卸載程序將請求權限提升以獲得相同的權限。檢查unins000.dat
中的標誌,看看是否是這種情況。
如何在unins000.dat文件中找到它? –
它位於安裝文件夾中。 –
是的,但是我怎樣才能讀取這個文件並找到這些信息呢?當我用記事本打開時,會出現一些奇怪的字符。 –
非管理員沒有Program Files文件夾的訪問權限,所以如果這是程序的安裝位置,那麼你就是要求不可能的。 –
@MarkRansom:如果安裝程序在安裝過程中更改權限,這不應該適用,是嗎? –
我已經做了一些測試,它的工作,但有一些機器,我不能卸載軟件。 該軟件被放置在C目錄中。 –