服务A 中创建进程B,怎样B才会有关机权限呢
查的资料时使用 CreateProcessAsUser 和LogonUser,但是这两个函数中有一个叫token的东西部明白,还有那位高人讲一下怎样实现上面的功能阿,或者有CreateProcessAsUser 和LogonUser的用法的,非常感谢。
查的资料时使用 CreateProcessAsUser 和LogonUser,但是这两个函数中有一个叫token的东西部明白,还有那位高人讲一下怎样实现上面的功能阿,或者有CreateProcessAsUser 和LogonUser的用法的,非常感谢。
//提升进程权限
BOOL CProcess::UpgradeProcessPrivilege(HANDLE hProcess, DWORD dwAttributes, LPCTSTR lpPrivilegeName)
// hProcess : 需要提升权限的目标进程
// lpPrivilegeName :特权名
// 返回值 : TRUE : 成功; FALSE : 失败
{
BOOL bResult = TRUE;
HANDLE hToken;
TOKEN_PRIVILEGES TokenPrivileges; if (OpenProcessToken(hProcess, TOKEN_ALL_ACCESS, &hToken) == 0)
{
CString strMessage;
strMessage.Format("OpenProcessToken Error: %d\n", GetLastError());
TRACE(strMessage);
bResult = FALSE;
} TokenPrivileges.PrivilegeCount = 1;
TokenPrivileges.Privileges[0].Attributes = dwAttributes;
//SE_PRIVILEGE_USED_FOR_ACCESS;//SE_PRIVILEGE_ENABLED ;
LookupPrivilegeValue(NULL, lpPrivilegeName, &TokenPrivileges.Privileges[0].Luid); AdjustTokenPrivileges(hToken, FALSE, &TokenPrivileges, sizeof(TOKEN_PRIVILEGES), NULL, NULL);
if (GetLastError() != ERROR_SUCCESS)
{
bResult = FALSE;
}
CloseHandle(hToken);
return bResult;
}
//