我用如下代碼,在服務中打開了一個權限為Administrator的行程。。但無論我用taskkill殺死行程,,還是向行程里發WM_CLOSE訊息,,都無法殺死,,因為該執行緒的用戶顯示為System。。那我應該如何才能以當前用戶身份打開行程。。或者我應該如何殺死呢。。求解。。
BOOL bSuccess = FALSE;
HANDLE hToken = NULL;
HANDLE hTokenDup = NULL;
do
{
if(OpenProcessToken(GetCurrentProcess(),TOKEN_ALL_ACCESS,&hToken))
{
if(DuplicateTokenEx(hToken, TOKEN_ALL_ACCESS,NULL, SecurityIdentification, TokenPrimary, &hTokenDup))
{
DWORD dwSessionId = WTSGetActiveConsoleSessionId();
if(!SetTokenInformation(hTokenDup,TokenSessionId,&dwSessionId,sizeof(DWORD)))
{
bSuccess = FALSE;
break;
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si,sizeof(STARTUPINFO));
ZeroMemory(&pi,sizeof(PROCESS_INFORMATION));
si.cb = sizeof(STARTUPINFO);
SECURITY_ATTRIBUTES sa = {0};
sa.nLength = sizeof(sa);
LPVOID pEnv = NULL;
DWORD dwCreationFlag = NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE | CREATE_UNICODE_ENVIRONMENT;
if(!CreateEnvironmentBlock(&pEnv,hTokenDup,FALSE))
{
if (pEnv != NULL)
DestroyEnvironmentBlock(pEnv);
bSuccess = FALSE;
break;
}
TCHAR lpszClientPath[MAX_PATH];
if (GetModuleFileName(NULL, lpszClientPath, MAX_PATH))
{
PathRemoveFileSpec(lpszClientPath);
}
std::wstring NotifyWndPath(lpszClientPath);
std::wstring NotifyWndName = NotifyWndPath;
NotifyWndName.append(L"\\KuaiApp.exe");
std::wstring ComdLine = NotifyWndName;
ComdLine.append(L" KuaiServiceNotify");
LPWSTR lpComdline=new wchar_t[ComdLine.size()+1];
wcscpy(lpComdline,((LPCTSTR)ComdLine.c_str()));
if(!CreateProcessAsUser(hTokenDup,NULL,lpComdline,&sa,&sa,FALSE,dwCreationFlag,pEnv,NotifyWndPath.c_str(),&si,&pi))
{
bSuccess = FALSE;
break;
}
if(pEnv)
{
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
DestroyEnvironmentBlock(pEnv);
}
}
else
{
bSuccess = FALSE;
break;
}
}
else
{
bSuccess = FALSE;
break;
}
}while(0);
if(hTokenDup != NULL && hTokenDup != INVALID_HANDLE_VALUE)
CloseHandle(hTokenDup);
if(hToken != NULL && hToken != INVALID_HANDLE_VALUE)
CloseHandle(hToken);
return bSuccess;
uj5u.com熱心網友回復:
有專門的api,好像要傳遞指定用戶的用戶名和密碼服務是超級管理員的權限
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/115902.html
上一篇:現在用什么語言開發桌面程式最好,就是可以做出漂亮的視窗
下一篇:csdn與c++
