最近工作上遇到了程式在Win7上不能執行,會被Win7的UAC(User Access Control)阻擋,一定要有administrator的權限才能執行。看過程式所做的一些動作,理論上應該是不會觸發UAC才對。
原本我以為是因為我們程式執行時所做的動作,會去觸發到UAC。不過我們的程式單純只是複製檔案到使用者目錄下,然後建立捷徑到桌面,這樣的動作應該不會觸發Win7的安全機制才對。本來一直找不到問題,直到今天,才由同事發現被UAC阻擋的原因。
聽到這樣的原因時,一開始我還不太敢相信,直到自己測試過後才確定沒錯。原因很簡單,就是因為我們的程式名稱裡面有個”Setup”的關鍵字,因此就被Win7給擋下來了。
可以看到圖示右下角有個盾牌,有點像是symantec的圖示,這樣就是會觸發UAC。
如果把”Setup”的”p”拿掉,這個檔案就變成安全的執行檔。
後來我又想到,通常我們還會用”Install”來給安裝檔取名,測試的結果是”Install”也會被擋掉,”Installation”也不例外。
再試下去,會發現其實是”instal”這個關鍵字就會有問題。
“insta”就會pass。
當然Win7的UAC不會只有這麼簡單,還是會去檢查一些執行的系統動作,只是在檢查這些系統動作之前,採用了一個最簡單的檔名檢查的機制,當作第一道防線。使用這樣一個最簡單的方式,感覺蠻有趣的,不知道除了我試的這兩個關鍵字外,不知道還有沒有其他的呢?
多利用 MSDN
回覆刪除http://msdn.microsoft.com/zh-tw/library/bb756960.aspx
感謝,我還真的從來沒有上msdn上查過這個訊息
回覆刪除