2014-02-17 70 views
1

我正在使用部署到Windows Standard Embedded 7平臺上的軟件。它利用inpout32.dll,一個流行的庫來讀取和寫入並行端口。這個圖書館有點鬼鬼祟祟。它不是通過安裝程序安裝,而是延遲安裝 - 當它加載並調用時,它會查看硬件並選擇屬於程序資源一部分的驅動程序。這會被複制到Windows驅動程序目錄。僅以管理員身份第一次運行程序

問題是如果程序沒有以管理員身份運行,則此副本將不會成功。該軟件就會死亡。因此,我正在尋找一種優雅的解決方案,不涉及關閉用戶帳戶控制(即使工作?)。在清單中指出程序應該以管理員模式運行將是一種方式,但這會彈出一個對話框,我不希望每次都發生這種情況。有沒有辦法指定「以管理員身份運行一次」?

假設沒有,您可以給我什麼建議?

+0

爲圖書館做一個合適的安裝程序。 –

回答

1

如果您無法控制代碼,您需要培訓用戶。我使用了一些舊應用程序。我以管理員身份運行它們,以便更新註冊表或無論它們需要做什麼,然後再也不用再做。

如果你寫這個應用程序,這是一個處理它的方法。寫一個助手的exe文件,完成需要提升的事情。當應用程序運行時,檢查是否需要執行任何操作(例如,註冊表項存在或類似內容,您可以在不升高的情況下進行檢查)。如果不是:

  • 建立一個對話框,告訴用戶在[某些任何ABC]功能可以工作之前[需要]完成任何操作。 OK按鈕上有一個UAC屏蔽。根據用戶的不同,告訴他們如果他們對即將到來的UAC對話沒有說「OK」,他們就不會獲得他們的功能。
  • OK,啓動助手exe文件 - 它應該有一個需要提升的嵌入式清單。有很多方法可以從你的代碼中提升它,但爲什麼要這麼麻煩呢,這個東西的全部目的就是做一個管理事情
  • 幫手完成它的事情然後退出。對於你的具體情況,我打電話,你知道會導致延遲加載。

主應用程序從未提升,用戶知道發生了什麼,UAC提示並非意外。

0

我喜歡@Kate Gregory的回答,但決定先嚐試別的。這是編寫一個安裝程序助手,它會默默地調用Install()覆蓋中的一個inpout32函數。由於這是通過管理員權限完成的,所以它很高興地將嵌入式驅動程序複製到system32,並且瞧!