2011-09-13 128 views
0

爲了更新我們的軟件,我們使用了VB6更新程序,更新級別和不同的更新源。它將必要的文件從更新源複製到本地目標(C:\ program files \ company \ product)。通過具有管理權限的服務提供服務或啓動程序

VB6程序只能與服務助手(SRVANY或類似)作爲服務運行,並沒有足夠的權利,改變或在給定的文件夾中添加新文件。但是,即使是.NET程序,也沒有必要的權利去做,只有在服務上設置了管理員憑證。

如果客戶端將不設置與管理員憑據的服務,我們如何使用服務或通過的變化在給定文件夾中的文件服務調用的程序,意味着它具有管理權限。

由於給定的更新級別(具有不同程序和報告版本的不同用戶),MSI/MSP不可能。

我們嘗試從C#.NET服務調用外部程序,但沒有辦法... 我們檢查了一些帶清單文件的tipps和技巧,或者認爲可以具有管理權限的COM對象,但我認爲這是錯誤的方式。

另一種可能性是創建一個計劃任務,通過給予'最高的樞軸'。但是這有用嗎?如果任務應該在登錄後運行,並且不同的用戶可以使用此計算機,則應爲每個用戶定義一個任務...我們不知道客戶端計算機上的每個登錄信息,因爲它們經常發生更改。

有人可以幫忙嗎?

回答

0

要啓動提升的事物,您需要一個作爲本地系統運行的服務,以便它具有訪問程序文件所需的特權。然而,服務總是運行,並需要記憶。

您可以創建計劃任務,該任務將在一段時間後啓動。我不確定,但是,可以在沒有UAC確認的情況下運行提升的任務。

清單還應該允許您啓動另一個應用程序提升。


基本上你的更新並不需要被提升:它可以下載更新文件到ProgramData這是由每一個用戶可寫。下載完成後,它會啓動需要管理權限的安裝程序。

Firefox使用自動更新機制:當它下載更新的版本,它會提示進行提升應用更新。

Apple Quicktime使用計劃任務來啓動更新程序。它提供了用戶可以選擇要安裝的更新的界面。它下載更新文件,提示提升,然後應用更新。

如果你不想要任何用戶交互,那麼服務是最好的選擇。