Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.17;
Скачать: CL | DM;

Вниз

Как запустить процесс под другим пользователем?   Найти похожие ветки 

 
ng_softman ©   (2003-05-09 10:26) [0]

Как, зная имя и пароль другого пользователя, запустить процесс, чтобы тот имел все

привелегии данного пользователя, или хотябы как получить токен контекста безопасности

и/или ACE (Access Control Entry).

функции
- LoginUser & CreateProcesssAsUser
- CreateProcessWithLogonW
выдают ошибку: "A required privilege is not held by the client."


 
ZZ ©   (2003-05-09 13:58) [1]

Определись в желаниях.
А лучше покажи НЕРАБОЧИЙ код с CreateProcessWithLogonW


 
ng_softman ©   (2003-05-09 15:04) [2]

>Определись в желаниях.
>А лучше покажи НЕРАБОЧИЙ код с CreateProcessWithLogonW

2 zz не забудь прописать параметры командной строки

Requirements
Windows NT/2000: Requires Windows 2000.
Windows 95/98: Unsupported.
Header: Declared in Winbase.h; include Windows.h.
Library: Use Advapi32.lib.
Unicode: Implemented only as Unicode.

<pre>
/***************
* CreatePWL.cpp
*
***************/

#ifndef UNICODE
#define UNICODE
#endif

#include "windows.h"
#include <stdio.h>


typedef BOOL (WINAPI *LPCreateProcessWithLogonW)
(LPCWSTR lpUsername, // user"s name
LPCWSTR lpDomain, // user"s domain
LPCWSTR lpPassword, // user"s password
DWORD dwLogonFlags, // logon option
LPCWSTR lpApplicationName, // executable module name
LPWSTR lpCommandLine, // command-line string
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // new environment block
LPCWSTR lpCurrentDirectory, // current directory name
LPSTARTUPINFOW lpStartupInfo, // startup information
LPPROCESS_INFORMATION lpProcessInfo // process information
);

int ErrMsg()
{
int nErr = GetLastError();
LPVOID lpMsgBuf;

FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
NULL, // message source
nErr, // message id
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // default language
(LPTSTR) &lpMsgBuf,
0,
NULL);
wprintf(L"%s\n", lpMsgBuf);

// Free the buffer.
LocalFree( lpMsgBuf );

return nErr;
}

/*
argv[1] - domain
argv[2] - user name
argv[3] - password
*/
int wmain(int argc, wchar_t *argv[])
{
// all parameters are required
//
if (argc != 4)
{
fwprintf(stderr, L"Usage: %s \\\\Domain UserName Password\n", argv[0]);
return 1;
}

int lResult = 0;
HINSTANCE hLib = LoadLibrary(L"advapi32.dll");

if ( hLib != NULL )
{
__try {
STARTUPINFO si;
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.lpDesktop = NULL; // TEXT("winsta0\\default");

PROCESS_INFORMATION pi;
ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));

LPCreateProcessWithLogonW CreateProcessWL;
CreateProcessWL = (LPCreateProcessWithLogonW) GetProcAddress(hLib, "CreateProcessWithLogonW");
if ( CreateProcessWL != NULL )
{
if ( CreateProcessWL(
argv[2], // username
argv[1], // domain
argv[3], // password
1, // LOGON_WITH_PROFILE
NULL, L"logon.exe", // app name & cmd line
CREATE_NEW_CONSOLE | NORMAL_PRIORITY_CLASS,
NULL, NULL,
&si, &pi) )
{
wprintf(L"Ok!!!!!!!\n");
}
else
lResult = ErrMsg();
}
}
__finally
{
FreeLibrary(hLib);
}
}
else
lResult = ErrMsg();
return lResult;
}
</pre>


 
ZZ ©   (2003-05-10 08:52) [3]

Ты будешь смеяться, но эта функция работает :) (правда если изменить L"logon.exe" на L"cmd.exe" ) Ошибок не возвращает.. Вот только для полного счастья поставь 4ым параметром 2, а не 1.
W2000SP2 сеть без домена.


 
AntonCFG   (2003-05-10 09:33) [4]

Удалено модератором
Примечание: Задай вопрос в СВОЕЙ ветке


 
ng_softman ©   (2003-05-10 12:25) [5]

2 zz: thanks. Но проблема в том что CreateProcessWithLogonW работает от 2К и выше, а как быть с NT4.


 
ZZ ©   (2003-05-10 14:46) [6]

Без потугов со стороны админа - ничего. Если есть возможность поработать под админом хоть один раз, то LogonUser/CreateProcesAsUser могут работать из сервиса, можно добавить нужные права (не рекомендуется, иначе бы их просто не убирали) всем. И много чего еще, но для настройки этого нужны права админа :(



Страницы: 1 вся ветка

Текущий архив: 2003.07.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
14-55790
shark
2003-06-28 18:00
2003.07.17
Опять Dll


3-55433
_zerg
2003-06-21 11:15
2003.07.17
Итоговые строки в таблице.


3-55397
Smalik
2003-06-23 13:56
2003.07.17
Сортировка в Grid e


14-55770
Dmitriy O.
2003-06-30 13:19
2003.07.17
Индесы в базах данных.


3-55414
AlexTregubov
2003-06-23 23:45
2003.07.17
Упаковка базы данных MS Access