我的應用使用SetSystemTime()
來設置來自GPS源的PC時鐘。在禁用了用戶帳戶控制的Windows 7中,此工作正常,但在Windows 8中,即使禁用了UAC,也會失敗。我得到的錯誤是ERROR_PRIVILEGE_NOT_HELD
。登錄到計算機的用戶在管理員組中。如果我在資源管理器中的文件的上下文菜單中以「以管理員身份運行」運行應用程序,我只能讓它工作 - 但登錄用戶是管理員。無法在Windows 8上使用SetSystemTime設置時鐘
所以......我需要做什麼不同的Windows 8獲得SetSysytemTime()
工作?我是否需要比當前用戶的管理員權限更高的特權?如果是這樣,什麼比管理員有更高的特權?或者是否需要以不同的方式設置用戶帳戶以允許這些類型的呼叫在Windows 8上運行?
編輯:如前所述的意見,手動試圖使SE_SYSTEMTIME_NAME
權限不起作用。嘗試使用LsaAddAccountRights
的建議MSDN方法添加權限。
「UAC禁用」角度是一個非常陰暗的角度,它不能被禁用afaik。幾乎肯定不是在Win8上,底層管道用於提供Metro應用運行的沙箱。您需要一個清單來請求提升或從已升級的進程啓動您的應用程序。 –
它提供了關閉UAC的選項......所以它實際上沒有被禁用嗎?多煩人! –
「調用進程必須具有SE_SYSTEMTIME_NAME特權,默認情況下此特權被禁用,SetSystemTime函數在更改系統時間之前啓用SE_SYSTEMTIME_NAME特權,並在返回之前禁用特權,有關詳細信息,請參閱使用特權運行。 - 也許在Windows 8中,這個特權不會自動啓用,你必須用AdjustTokenPrivileges()自己來完成。可能值得嘗試。 –