Запуск с правами пользователя, из под севиса

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

  1. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Код (Text):
    1. int main(int argc, char *argv[])
    2. {
    3.         static STARTUPINFO si;
    4.         static PROCESS_INFORMATION pi;
    5.         HANDLE hTokenNew = NULL, hTokenDup = NULL,hToken=NULL;
    6.  
    7.         Sleep(1000*10); // для отладки, улыбаемся и машем ;-)
    8.  
    9.    
    10.         PCTSTR s[1] = { L"SeTcbPrivilege"};
    11.         EnablePrivileges(&s[0], 1);
    12.         DWORD dwSessionId = WTSGetActiveConsoleSessionId();
    13.         WTSQueryUserToken(dwSessionId, &hTokenNew);
    14.  
    15.         DWORD d = GetLastError();
    16.  
    17.         DuplicateTokenEx(hTokenNew, MAXIMUM_ALLOWED, NULL,
    18.  
    19.         SecurityIdentification, TokenPrimary, &hTokenDup);
    20.  
    21.         ZeroMemory( &si, sizeof( STARTUPINFO ) );
    22.         si.cb = sizeof( STARTUPINFO );
    23.         si.lpDesktop = L"winsta0\\default";
    24.  
    25.         LPVOID  pEnv = NULL;
    26.         DWORD dwCreationFlag = NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE;
    27.  
    28.         CreateEnvironmentBlock(&pEnv, hTokenDup, FALSE);
    29.  
    30.  
    31.  
    32.         dwCreationFlag |= CREATE_UNICODE_ENVIRONMENT;
    33.  
    34.  
    35.         ZeroMemory( &pi, sizeof( PROCESS_INFORMATION ) );
    36.  
    37.         CreateProcessAsUser( hTokenDup, NULL, L"d:\\windows\\system32\\notepad.exe",
    38.             NULL, NULL, FALSE, dwCreationFlag,
    39.             pEnv, NULL, &si, &pi);
    40.  
    41.         CloseHandle(hTokenDup);
    42.  
    43.     return 0;
    44. }
    Привелегии даются нормально, все вроде бы нормально, но вылетает с ошибкой доступа к памяти при вызове CreateProcessAsUser. Трейсить апи не хотелось бы, может есть предположения, где косяк зарылся. Запускаю с правами system, иначе права не даются.
     
  2. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    spa
    Ось? Компилятор? Ага, принято. Ошибка в третьем аргументе, LPTSTR lpCommandLine.
     
  3. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Sol_Ksacap
    Windows 7, Visual Studio 2008
     
  4. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    м? или это так стеб, правильно так этих ватней, не указывающих ос и компиль.
     
  5. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    ну я и тормоз, всем спасибо, до новых встреч
     
  6. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    И еще вопрос, можно сделать поток а не процесс от этого пользователя, и на этом десктопе.