我想獲取進程的用戶名並檢查它是否是本地管理員。或者直接檢查當前procees用戶是本地管理員檢查進程用戶是否爲管理員C++
1
A
回答
0
假設你是在一個窗口OS有一個殼功能:IsUserAnAdmin
本文不建議使用您自己的功能儘管如此,使用CheckTokenMembership。甚至有一個代碼示例可以幫助你。
3
獲取當前用戶名和GetUserName(),然後調用NetUserGetInfo()與服務器名稱(NULL爲本地)和您剛剛得到的用戶名。將其傳遞給USER_INFO_1結構,然後在結構中訪問usri1_priv。如果值爲 USER_PRIV_ADMIN,那麼您將知道用戶名是管理員。
2
使用管理員用戶和非管理員用戶在Windows XP SP3,Windows 7 32位和64位上進行測試。 代碼從等效的C#移植並使用ATL Windows安全包裝類。
#include <atlbase.h>
#include <atlsecurity.h>
// The function returns true if the user who is running the
// application is a member of the Administrators group,
// which does not necessarily mean the process has admin privileges.
bool IsAdministrator(HRESULT &rHr)
{
bool bIsAdmin = false;
try
{
// Open the access token of the current process.
ATL::CAccessToken aToken;
if (!aToken.GetProcessToken(TOKEN_QUERY))
{
throw MAKE_SCODE(SEVERITY_ERROR, FACILITY_WIN32,
::GetLastError());
}
// Query for the access token's group information.
ATL::CTokenGroups groups;
if (!aToken.GetGroups(&groups))
{
throw MAKE_SCODE(SEVERITY_ERROR, FACILITY_WIN32,
::GetLastError());
}
// Iterate through the access token's groups
// looking for a match against the builtin admins group.
ATL::CSid::CSidArray groupSids;
ATL::CAtlArray<DWORD> groupAttribs;
groups.GetSidsAndAttributes(&groupSids, &groupAttribs);
for (UINT i = 0; !bIsAdmin && i < groupSids.GetCount(); ++i)
{
bIsAdmin = groupSids.GetAt(i) == ATL::Sids::Admins();
}
rHr = S_OK;
}
catch (HRESULT hr)
{
rHr = hr;
}
return bIsAdmin;
}
相關問題
- 1. 檢查用戶是否屬於管理員組 - C#
- 2. 如何檢查用戶是否在C#中的域管理員
- 3. 檢查用戶是否是管理員/遊戲管理員[庫MySQLi]
- 4. 檢查當前用戶是否爲管理員
- 5. WSS 3.0功能 - 檢查用戶是否爲農場管理員
- 6. 檢查最終用戶是否爲管理員
- 7. 如何檢查是否應用程序作爲管理員VB.NET
- 8. Android用戶管理器:檢查用戶是否擁有者(管理員)
- 9. 如何檢查用戶是否是管理員?
- 10. 如何檢查用戶是否是「管理員」
- 11. 檢查用戶是否是laravel中的管理員
- 12. 檢查用戶是否是管理員(vb)
- 13. 檢查用戶是否是管理員或不在PHP中
- 14. 使用before_filter檢查管理員或用戶是否登錄
- 15. 檢查管理員是否已登錄
- 16. Python - 檢查用戶是否具有管理員權限
- 17. 流星檢查用戶是否管理員
- 18. 檢查請求的用戶是否具有管理員權限
- 19. 如何檢查管理員或用戶是否登錄odoo
- 20. 如何檢查當前用戶是管理員組的C#
- 21. 如何檢查給定用戶是否是內置管理員組的成員?
- 22. mysql檢查賬戶類型,看看是否管理員登錄
- 23. Magento - 檢查管理員和客戶是否登錄
- 24. 檢查用戶是否以共享點用戶或管理員身份登錄
- 25. 檢測用戶是否是FB JS SDK的頁面管理員
- 26. 我如何檢查我的程序是否以用戶身份作爲管理員運行(Vista/Win7,C++)
- 27. 檢查管理員
- 28. 如何檢查現有的用戶帳戶是否在管理員組中?
- 29. 檢查用戶是否是會員
- 30. 如何檢查用戶是否是該機器上的管理員
哪個操作系統?這可能會有所作爲... – crashmstr 2009-06-11 13:46:13
「本地管理員」很可能在Windows上。 – sharptooth 2009-06-11 13:54:40