我需要從C++程序中註銷用戶。我使用ExitWindowsEx API,但我不確定從文檔是否需要任何特殊權限?我是否需要SE_SHUTDOWN_NAME權限才能註銷用戶?
0
A
回答
0
你這樣做。這裏有一個例子
bool ShutdownWindows(void)
{
HANDLE hToken = NULL;
TOKEN_PRIVILEGES tkp = {0};
bool bRet = false;
// Get a token for this process.
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {
if (LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid)) {
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// Get the shutdown privilege for this process.
if (AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, NULL, 0)) {
::CloseHandle(hToken);
if (ERROR_SUCCESS == GetLastError()) {
DWORD dwFlags = EWX_POWEROFF;
DWORD dwReason = SHTDN_REASON_MAJOR_SYSTEM;
if (ExitWindowsEx(dwFlags, dwReason)) {
bRet = true;
}
}
}
}
}
return bRet;
} // ShutdownWindows
+1
首先,原始問題是關於註銷用戶('EWX_LOGOFF'標誌),而不是關閉工作站('EWX_POWEROFF'參數。)如果你這樣做,那麼確實需要'SE_SHUTDOWN_NAME'特權。如果它只是'EWX_LOGOFF',那麼它不是。請注意,您提出的解決方案仍然可以工作,但您只需爲流程提供不必要的權限即可。 – ahmd0
+0
此外,您調整令牌權限的代碼也是錯誤的。你應該在調用'AdjustTokenPrivileges()'後調用'GetLastError()'並確保它返回'ERROR_SUCCESS',以確保所請求的特權實際上被授予。 'hToken'句柄被釋放的方式也有內存泄漏....所以我會在那裏停下來。 – ahmd0
相關問題
- 1. 我是否需要管理員權限才能使用證書?
- 2. SQL Server SMO是否需要特殊的權限才能使用?
- 3. 用戶是否需要特殊權限才能使用LoadFromSqlServer調用包?
- 4. 是否需要註銷SSH?
- 5. 用戶是否需要管理員權限才能安裝Flash播放器?
- 6. 是否需要更改註冊表才能授予程序權限?
- 7. 我是否需要調整令牌權限才能成功調用CreateRemoteThread?
- 8. 我是否需要通過授權才能使用Imgur API?
- 9. 我是否需要在某處註冊才能使用HTTPS?
- 10. 我是否需要訪問Facbooker的Facebook用戶ID的權限?
- 11. 用戶需要什麼權限才能執行RetrieveAttributeRequest?
- 12. facebook android,需要哪些權限才能訪問用戶的ID?
- 13. 我是否需要管理員特權才能運行HTA?
- 14. 我是否需要額外的權限才能邀請用戶加入應用組?
- 15. 是否需要註銷AndEngine中的EntityModifier?
- 16. 需要哪些授權才能查看information_schema.schema_privileges中的* other *用戶的權限?
- 17. 您是否需要XSRF/CSRF令牌來註銷註銷請求?
- 18. 爲什麼我需要root權限才能運行GDB?
- 19. 爲什麼我們需要「android.permission.BROADCAST_STICKY」權限才能發送Sticky Broadcast
- 20. 我需要什麼ASP.NET權限才能訪問串行端口?
- 21. 我需要什麼權限才能發送短信?
- 22. 我是否需要在註銷時調用offAuth方法?
- 23. 是否需要註冊一個DLL才能使用它
- 24. 我需要註銷'anonymous'BroadcastReceiver
- 25. 我是否需要上傳我的iOS應用才能獲得我的iOS遊戲的publish_actions權限?
- 26. 網絡破解者需要讀取權限才能銷燬UNIX服務器
- 27. 檢查是否需要READ_EXTERNAL_STORAGE權限才能從特定的Uri中讀取
- 28. 是否需要執行權限才能cd到unix中的某個目錄?
- 29. Android Cordova device.uuid是否需要權限?
- 30. 權限是否需要顯式包名?
不,你不從我知道需要任何額外的特權。在我的學校,我可以關閉權限並註銷。 – chris
謝謝。您可能想要將它作爲答案發布。但是,有一個後續問題 - 在企業Active Directory環境中,沒有可以限制用戶使用該API註銷的GPO或權限,是嗎? – ahmd0
我非常懷疑它。如果我是正確的,那麼這個政策很可能不會讓用戶自己註銷。儘管如此,我還是不想聽聽自己的經歷,所以我認爲聽到更確信自己知道的人會是一個好主意。 – chris