用Win7系統的人應該知道UAC是什么了,關掉UAC可以省掉很多麻煩事,同時也看不到程序圖標上的小盾牌,也不會提示獲取系統權限的對話框。
這里討論沒有關閉UAC的情況,默認情況下運行的程序是不具有系統權限的,也無法對操作系統做任何修改,而修改系統時間正屬于這一類,所以如果程序中不添加對UAC的支持,運行的程序是無法成功修改系統時間的。當然,直接在程序圖標上按鼠標右鍵,選擇使用管理員權限打開也是可以的。
呃,好像說的有點簡單,不過知道UAC是什么的應該看得懂,不再解釋了,直接寫一下添加UAC支持的方法。
1、打開工程的資源視圖
2、選擇"Insert resource",選擇"custom","resource type"填24,資源ID為1,然后把以下內容復制到資源內容中保存(看到的是16進制內容)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="mulitray.exe.manifest" type="win32"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
3、編譯連接,此時就可以看到程序圖標上出現了小盾牌,運行程序時彈出UAC對話框,獲得管理權限
注:
requestedExecutionLevel可以指定為三個值:
asInvoker:默認選項,新的進程將簡單地繼承其父進程的訪問令牌。
highestAvailable:應用程序會選擇該用戶允許范圍內盡可能寬松的安全上下文。對于標準用戶來說,該選項與asInvoker一樣,而對于管理員來說,這就意味著請求非限制訪問令牌.
requireAdministrator:應用程序需要管理員的非限制訪問令牌。運行該程序時,標準用戶將要輸入管理員的用戶名和密碼,而管理員則要在彈出的確認對話框中進行確認。
(SetSysTime.rar)
文章來源:Slyar Home (www.slyar.com)