2012-11-20 300 views
1

我開發了SNMP擴展DLL來遠程執行一些操作,如關機,重啓等。它與XP正常工作。現在我正在爲Windows 7遷移DLL。我已閱讀文檔「會話0隔離的影響「,並遵循DLL遷移的說明。例如,我按照鏈接How To ShutDown the System - msdn中的說明進行操作,並對關機操作進行編碼。但「AdjustTokenPrivileges」總是返回錯誤:1300並非所有引用的特權或組都被分配給調用者。AdjustTokenPrivileges失敗,出現錯誤1300 ERROR_NOT_ALL_ASSIGNED

有什麼辦法解決這個錯誤?如何啓用Windows 7的關機權限使用VC++?

回答

0

是的,有一個:將權限分配給調用者(需要註銷才能生效)。這需要計算機或域/ AD的管理員採取行動。您也可以使用LsaAddAccountRights()LsaRemoveAccountRights()以編程方式執行此操作。

考慮一下:每個用戶都有一組分配的權限。代表此用戶的令牌可以啓用或禁用任何已分配的人員。你想要做的是啓用一個從未分配給用戶的特權。因此它不能啓用/激活。

但是,我建議你發佈你的代碼,因爲本地用戶無法關閉系統是非常不尋常的。此權限通常授予默認情況下本地登錄的所有人。

+0

是否可以使用組策略手動將關機權限添加到用戶? – Eshwar

+0

@Eshwar:當然。運行'secpol.msc'然後轉到'Local Policies' - >'User Rights Assignment',然後「關閉系統」... – 0xC0000022L

+0

我已經將「Everyone」和我當前的用戶添加到「關閉系統」。 。但是同樣的錯誤發生。 – Eshwar

相關問題