Vista 內如何不出現UAC並啟動Kernel Mode程式 |
答題得分者是:aftcast
|
markchou_tw
一般會員 發表:3 回覆:7 積分:2 註冊:2005-07-04 發送簡訊給我 |
目前我的情況是在Vista64下要執行一程式且需要啟動Kernel mode的驅動程式 (使用service的方式).
驅動程式已經有申請Digital Signature, 但是執行的時候還是需要Run as Administrator, 或者關掉UAC才能執行. 請問我要如何做才能不關閉UAC且不選用Run as Administrator 就能順利執行程式? 我試過主程式也簽署Digital Signature, 但還是不行. 是還要加入manifesta嗎? 有否相關資訊可參考? 我試過MSDN上的說明, 加入一段 ms_asmv2:requestedExecutionLevel level="requireAdministrator" 然後用 mt.exe -manifest r64.manifest -outputresource:r64.exe;#1 結果還是一樣, 請有做過類似事情的大大解惑一下, 感激不盡~~~ 編輯記錄
markchou_tw 重新編輯於 2009-04-06 18:30:21, 註解 無‧
markchou_tw 重新編輯於 2009-04-06 18:33:26, 註解 無‧ markchou_tw 重新編輯於 2009-04-06 18:34:14, 註解 無‧ |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
|
markchou_tw
一般會員 發表:3 回覆:7 積分:2 註冊:2005-07-04 發送簡訊給我 |
|
markchou_tw
一般會員 發表:3 回覆:7 積分:2 註冊:2005-07-04 發送簡訊給我 |
|
markchou_tw
一般會員 發表:3 回覆:7 積分:2 註冊:2005-07-04 發送簡訊給我 |
我已經試過範例的 Service 程式, 指令是 "service.exe -i", 但是似乎沒辦法安裝到服務裡面, 所以也沒辦法啟動 "a.exe" 這支程式.
而且這就算可以通過似乎也不是正統的處理方式. 我想問的是經由正常程序的話怎樣使程式執行時不會跳出UAC畫面. 例如各電腦開機時會載入各式各樣的驅動程式和應用程式, 卻不會有任何UAC畫面出來, 我想那應該是有另外的認證程序. 我們已經申請數位簽章, 但是那只是讓UAC畫面出現簽章擁有者的資料. 如果要讓UAC畫面完全不出現的話不知道是不是要通過WHQL等等之類的認證? 這問題看起來已經超出程式設計範圍了, 不過卻又是職場上Windows 程式設計者避不開的問題. 請有相關經驗的大大們提供一下資料, 感激不盡!!! |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
你好,
請再詳讀一下UAC的一些技術文章。你會發現由於windows logon(vista含以後)時,會分出許多不同的session,driver LOAD或是service啟動時是一個session,屬於"系統"session。而接下來user login,此時又會再建立另一個session(即使你是admin也一樣),而這二個不同的session要互動時,就需要"認證"與權限提昇並提示。這才是標準的。 而過去你使用互動式service,即user與service可以互動(xp含之前是user與system login時同session),是沒有問題的。但vista以後「正統」就是一定要提示(不管有無signature)!! 若你還是試著想要"無形"的不提示,方法就只有範例那一個了,那的確用了不正當的方式,即借(copy)session 0(系統)的權限。 所以建議別花力氣了想別的方法了。再讀一下深入的uac文件你應該可以了解。 ps。為何會這樣設計? 就是怕病毒之類的先建立service後,user進入後即可得到最高權限…改成不同的session後,即使病毒先建立service了,也不容易無形的提昇權限做任何事! 剛又發現有一篇新的文章4月21日的,有性趣再看一次,也許有你要的答案! http://www.codeproject.com/KB/vista-security/SubvertingVistaUAC.aspx ===================引 用 markchou_tw 文 章=================== 我已經試過範例的 Service 程式, 指令是 "service.exe -i", 但是似乎沒辦法安裝到服務裡面, 所以也沒辦法啟動 "a.exe" 這支程式. 而且這就算可以通過似乎也不是正統的處理方式. 我想問的是經由正常程序的話怎樣使程式執行時不會跳出UAC畫面. 例如各電腦開機時會載入各式各樣的驅動程式和應用程式, 卻不會有任何UAC畫面出來, 我想那應該是有另外的認證程序. 我們已經申請數位簽章, 但是那只是讓UAC畫面出現簽章擁有者的資料. 如果要讓UAC畫面完全不出現的話不知道是不是要通過WHQL等等之類的認證? 這問題看起來已經超出程式設計範圍了, 不過卻又是職場上Windows 程式設計者避不開的問題. 請有相關經驗的大大們提供一下資料, 感激不盡!!!
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan
編輯記錄
aftcast 重新編輯於 2009-05-05 14:07:16, 註解 無‧
|
markchou_tw
一般會員 發表:3 回覆:7 積分:2 註冊:2005-07-04 發送簡訊給我 |
===================引 用 aftcast 文 章=================== 你好, 請再詳讀一下UAC的一些技術文章。你會發現由於windows logon(vista含以後)時,會分出許多不同的session,driver LOAD或是service啟動時是一個session,屬於"系統"session。而接下來user login,此時又會再建立另一個session(即使你是admin也一樣),而這二個不同的session要互動時,就需要"認證"與權限提昇並提示。這才是標準的。 而過去你使用互動式service,即user與service可以互動(xp含之前是user與system login時同session),是沒有問題的。但vista以後「正統」就是一定要提示(不管有無signature)!! 若你還是試著想要"無形"的不提示,方法就只有範例那一個了,那的確用了不正當的方式,即借(copy)session 0(系統)的權限。 所以建議別花力氣了想別的方法了。再讀一下深入的uac文件你應該可以了解。 ps。為何會這樣設計? 就是怕病毒之類的先建立service後,user進入後即可得到最高權限…改成不同的session後,即使病毒先建立service了,也不容易無形的提昇權限做任何事! 剛又發現有一篇新的文章4月21日的,有性趣再看一次,也許有你要的答案! http://www.codeproject.com/KB/vista-security/SubvertingVistaUAC.aspx ================================================================================= 謝謝大大費心指點, 看來程式想要以正當程序在User login 以後載入Kernel module是一定會跳出UAC視窗了. 不過有很多支援Vista的周邊裝置的驅動程式在載入時並不會跳出UAC視窗(當然在安裝驅動程式時還是會出現UAC). 所以我有另外一個想法, 就是把我的程式的Kernel module 加上inf 安裝到Vista內, 然後我的應用程式使用creatfile 或是 DeviceIoCtrl 這兩個指令和我的kernel module交換資料. 這樣只有在第一次安裝Kernel module 時會出現UAC, 以後Vista開機時就自動載入我的Kernel module, 這樣就不會每次執行程式時出現UAC了. 不知道寫周邊裝置驅動程式的廠商們是不是這樣做? 亦或是要通過WHQL才行? 我先嘗試用自己想的方法試試看, 可以的話再PO出來通知大家. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |