2010-10-05 60 views
2

我有一個系統,我把它設置爲UAC的普通模式,在我的delphi環境中編譯我的項目ka.exe,我爲它創建了一個installshield項目。新編譯的應用程序需要UAC /海拔?

設置和一切都完成了! 但是每當我開始我的程序,它需要提升,我沒有任何線索爲什麼。

爲了確保installshield不會在我身上玩mindgames,我編譯了一個新的.exe文件,並將其手動複製到我的聯網計算機上。

圖標看起來一樣,它也有這個UAC盾。

我的項目有內,有些功能可能與網絡共享名稱交談,並與SQL數據庫說話......

所以爲什麼我的應用程序需要提升運行?

+0

它訪問c:\ program files文件夾下的任何文件嗎?寫入INI文件,例如? – 2010-10-05 12:36:27

+0

你的代碼試圖做什麼將永遠不會導致海拔。 – 2010-10-06 14:36:52

回答

3

首先,如果你能夠與德爾福,加上嵌入式清單與asInvoker。如果你不能,那麼創建一個外部文件並將其放在與exe相同的文件夾中。如果盾牌消失,很好。

如果不是,那麼事情會變得更加混亂。有時,當你運行一個應用程序時,Windows隨後出現,並說「這可能沒有奏效,你想用推薦的設置再試一次嗎?」。如果你說好,那麼存儲的組策略會在剩下的時間內提升該應用。它確實顯示如果您重命名exe,組策略的效果將停止。你可以試試。

+0

@Plastkort哪一個工作?清單或重命名? – 2010-10-06 16:22:30

+0

我嘗試了asInvoker,但它沒有工作,但重命名文件。 – 2011-04-10 22:46:16

0

在Windows Vista和更高版本上,啓用UAC時,管理員仍然沒有像我們在Windows XP和更低版本中看到的那樣擁有完整的權限。如果您的程序嘗試執行管理任務之一(例如系統保護位置中的請求;將數據寫入受保護的位置(例如%ProgramFiles%,Windows目錄,HKEY_LOCAL_MACHINE等等)),則您的程序需要請求提升以使同意UI提示出現,需要管理員批准。

你會得到一些詳細信息here

+0

問題不在於「爲什麼我的應用程序需要提升並且沒有它而失敗?」,而是「爲什麼我的應用程序要求提升?」如果應用程序僅僅因爲需要提升而需要提升就會很酷,但這並非如此。應用程序請求提升的原因對於大多數開發人員來說並不明顯 - 其中一些列在其他問題的答案中。 – 2010-10-13 14:31:07

+0

我的答案甚至可以應用於後者。發問者應該提供足夠的背景和期望描述,以便對他/她的問題沒有多重解釋。 – Vantomex 2010-10-14 01:58:42

3

即使文件名沒有「SETUP」或「INSTALL」字符串,如果VersionInfo資源包含這些文本,Windows可能會認爲它需要提升。

檢查VersionInfo,嘗試清理任何可疑字符串,因爲我相信Windows會檢查更多文本(如非英文文本)。