2015-06-30 27 views
1

我正在使用Windows 7和Microsoft Visual Studio 2010.如果文件的名稱包含「update」,Windows會強制UAC提升文件?

我創建了一個簡單的項目,其中一個MessageBox()調用WinMain()。該項目的名稱是"update",所以EXE文件的名稱是update.exe。我在鏈接器設置中關閉了清單生成。但是當我嘗試在Visual Studio中開始調試時,它說我的應用程序需要提升。

我決定通過在Windows資源管理器中單擊它來啓動應用程序,但它仍然需要管理員權限。我將它重命名爲update12345.exe12345update12345.exe,但它仍然需要提升。

但是,當我將其重命名爲12345.exe時,它在沒有請求管理員權限的情況下完美運行!我認爲Windows需要提升所有名稱包含"update"子字符的文件。因此,我從SysInternals DebugView中取出另一個文件(debugview.exe),並將其重命名爲update.exe - 但它沒有提升。

這種奇怪行爲的原因是什麼?

+0

您沒有正確構建程序,它缺少聲明它意識到UAC的清單。這對於Visual Studio來說很難做到,通過使用項目模板來開始您的項目,落在成功的大坑裏。 –

+0

我一直開發沒有清單的項目,他們完美地工作。我的項目設計爲可在任何Windows系統上運行,並且不需要任何需要UAC的任何操作。但麻煩在於文件名:如果它包含「更新」,它需要UAC,否則它啓動並且完美地工作。 – deselect

+0

Hmya,他們完美地工作,直到你碰到某種類型的牆。像這個。當你在註冊表中進行訪問並在禁止訪問的地方訪問文件時,你會有更多驚喜。清單的存在對舊版Windows不具有任何作用,但不知道它們的含義。 –

回答

3

如果您的應用沒有在其清單中包含requestedExecutionLevel,安裝程序檢測技術將檢查其名稱是否包含「更新」,「安裝」等,以檢測是否爲安裝程序應用程序。 這是因爲您的應用在重命名爲「更新」時需要UAC,而其他應用不具有清單。

相關問題