Доступ к процессу активного пользователя...

Тема в разделе "WASM.WIN32", создана пользователем klkvitaliy, 4 авг 2010.

  1. klkvitaliy

    klkvitaliy New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2010
    Сообщения:
    5
    Адрес:
    Харьков
    Есть 2 залогиненный пользователя, пользователь 1 с паролем, пароль ествественно узнать проблематично, возможно ли от его 1 пользователя выполневшего вход запустить что то в сессии 2 пользователя на той же машине. Например cmd. Пока на win xp. У меня идеи закончились, жду вашей помощи...
     
  2. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    klkvitaliy
    А попробуйте открыть regedit и посмотреть как реализован пункт меню "Запуск от имени администратора"
     
  3. klkvitaliy

    klkvitaliy New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2010
    Сообщения:
    5
    Адрес:
    Харьков
    Для тех кто столкнулся с этой задачей вот при мер ее решения

    SS>#include "stdafx.h"
    SS>#include <windows.h>
    SS>#include <WtsApi32.h>

    SS>int Error(const char* msg)
    SS>{
    SS> printf("Failure: %s. LE: 0x%x", msg, GetLastError());
    SS> return 1;
    SS>}

    SS>int _tmain(int argc, _TCHAR* argv[])
    SS>{
    SS> DWORD sourceSession = 0;
    SS> DWORD destinationSession = 1;
    SS> LPTSTR programToRun = TEXT("cmd.exe");

    SS> HANDLE userToken;
    SS> if (!WTSQueryUserToken(sourceSession, &userToken))
    SS> return Error("Failed to get user token");
    SS> if (!DuplicateHandle(GetCurrentProcess(), userToken, GetCurrentProcess(), &userToken,
    SS> TOKEN_WRITE | TOKEN_ADJUST_SESSIONID | TOKEN_QUERY | TOKEN_DUPLICATE | TOKEN_ASSIGN_PRIMARY,
    SS> FALSE, DUPLICATE_CLOSE_SOURCE))
    SS> return Error("Failed to gain more access to token");
    SS> if (!SetTokenInformation(userToken, TokenSessionId, (LPVOID)&destinationSession, sizeof(destinationSession)))
    SS> return Error("Failed to set session id");
    SS> STARTUPINFO si = {sizeof(si)};
    SS> PROCESS_INFORMATION pi;
    SS> if (!CreateProcessAsUser(userToken, NULL, programToRun, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
    SS> return Error("Failed to create process");

    SS> return 0;
    SS>}
    SS>