2015-10-15 121 views
6

使用Inno-Setup,我需要由管理員用戶安裝的軟件可以由默認用戶卸載。Inno-Setup:無需管理員權限即可卸載

參數特權要求最低,但問題依然存在。

我做了測試,在某些機器(所有這些都是Windows 7),並在幾個我可以卸載使用默認的用戶,但也有其他人並沒有讓我卸載,並要求管理員用戶。

我沒有在問題和互聯網搜索中發現模式。

安裝文件夾是C:\;

我不使用[註冊]部分並在[DIRS]部分中的所有參數都使用權限:用戶 - 修改

+0

非管理員沒有Program Files文件夾的訪問權限,所以如果這是程序的安裝位置,那麼你就是要求不可能的。 –

+0

@MarkRansom:如果安裝程序在安裝過程中更改權限,這不應該適用,是嗎? –

+0

我已經做了一些測試,它的工作,但有一些機器,我不能卸載軟件。 該軟件被放置在C目錄中。 –

回答

0

有要考慮幾件事情:

  1. 一般,安裝文件夾是%ProgramFiles%或%ProgramFiles(x86)%,它是受操作系統保護的文件夾。要繞過此保護,安裝程序必須更改安裝文件夾的權限以允許任何人刪除。

    [Dirs]部分,您可以使用Permissions:users-modify(或者如果需要,甚至更寬容)。

  2. [Registry]部分類似。

  3. InnoSetup使用一種稱爲unins000.exe用於卸載文件。該文件包含默認情況下請求特權asInvoker的清單。據我所知,這不會因PrivilegesRequired設置而改變。到目前爲止,asInvoker應該沒問題。如果新版本的InnoSetup將其設置爲更高的值,只要留意它就可以了。


對於其他遊客發現這一點,並沒有使用InnoSetup:

如果不嵌入您的安裝清單,Windows將使用heuristics for installer detection (Microsoft, .pptx)。如果啓發式結果爲正,Windows將自動請求管理員提升。因此,請使用清單並請求asInvoker權限。

+1

安裝文件夾是C:\,我沒有使用[Registry]部分,並且[Dirs]部分中的所有參數都使用Permissions:users-modify。 –

+0

我已經做了一些測試,它的工作,但有一些機器,我不能卸載軟件,所以我認爲有一種風景,我不考慮。 –

+0

@RobsonPiernodeJesus:這是您應該添加到問題中的重要信息。 –

0

的Inno Setup的卸載程序請求的權限提升,如果安裝了具有管理員或超級用戶權限運行(無論它是否需要與PrivilegesRequired那些明確)。

此信息被存儲在unins000.dat的字節14C(十六進制)/ 322(十進制)。

這是一個位掩碼,其中第1位(0×01)表示管理員權限,和第7位(0×40)表示功率的用戶權限。


所以,如果你安裝的應用程序作爲管理員/高級用戶,即使安裝有PrivilegesRequired=lowest卸載程序將請求權限提升以獲得相同的權限。檢查unins000.dat中的標誌,看看是否是這種情況。

+0

如何在unins000.dat文件中找到它? –

+0

它位於安裝文件夾中。 –

+0

是的,但是我怎樣才能讀取這個文件並找到這些信息呢?當我用記事本打開時,會出現一些奇怪的字符。 –