Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запуск Thead от имени другого пользователя / 14 сообщений из 14, страница 1 из 1
19.12.2005, 15:45
    #33444520
cap83
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск Thead от имени другого пользователя
Здрасвуйте ВСЕ !

Можно ли запустить поток Thead с другим именем и паролем ? Если нет то что делать права юзеру надо дать только на одну операцию?

Заранее благодарен!
...
Рейтинг: 0 / 0
19.12.2005, 16:29
    #33444652
Александр Спелицин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск Thead от имени другого пользователя
Если в Вашей программе есть в открытом виде логин и пароль нужной уч. записи (например администратора), то проще все сделать через CreateProcessAsUser().
...
Рейтинг: 0 / 0
19.12.2005, 16:37
    #33444686
Lacrim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск Thead от имени другого пользователя
Александр СпелицинЕсли в Вашей программе есть в открытом виде логин и пароль нужной уч. записи (например администратора), то проще все сделать через CreateProcessAsUser().

Решение, наверняка, не подойдет, потому что здесь придется запускать какой-то дополнительный модуль. Согласитесь, что это не совсем логично для копирования
одного единственного файла с сервера, которое будет производится неизвестно с какой частотой. Это слишком "в лоб".

Я уже интересовался подобным. Вот что насоветовали.

http://www.sql.ru/forum/actualthread.aspx?tid=219485&hl=lacrim
...
Рейтинг: 0 / 0
19.12.2005, 16:38
    #33444692
cap83
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск Thead от имени другого пользователя
А где пример взять с использованием CreateProcessAsUser с комментариями на русском ?
...
Рейтинг: 0 / 0
19.12.2005, 16:48
    #33444730
cap83
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск Thead от имени другого пользователя
Да ткните пальцем как связать SetThreadToken с известным Юзернэйм и пассворд ?
...
Рейтинг: 0 / 0
19.12.2005, 16:59
    #33444778
Lacrim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск Thead от имени другого пользователя
cap83Да ткните пальцем как связать SetThreadToken с известным Юзернэйм и пассворд ?


"Пилите, Шура, пилите. Они золотые!" (copyright reserverd)
...
Рейтинг: 0 / 0
19.12.2005, 17:32
    #33444893
cap83
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск Thead от имени другого пользователя
DWORD dwThreadId, dwThrdParam = 1;
HANDLE hThread;
PHANDLE ptk = new HANDLE;

if(LogonUser("Administrator","domen","password",LOGON32_LOGON_NETWORK,LOGON32_PROVIDER_DEFAULT,ptk))
{
ImpersonateLoggedOnUser(*ptk);
RevertToSelf();
hThread = CreateThread(
NULL,
0,
ThreadFunc,
&dwThrdParam,
0,
&dwThreadId);
SuspendThread(hThread);
SetThreadToken(&hThread,*ptk);
ResumeThread(hThread);

}

Собственно Что не так ?

Сам поток пытается получить размер диска C:\ на удаленной машине

DWORD WINAPI ThreadFunc( LPVOID lpParam )
{
char str[512];

typedef union {
__int64 x;
ULARGE_INTEGER y;
} uni64;

ULARGE_INTEGER FreeBytesAvailableToCaller,TotalNumberOfBytes,TotalNumberOfFreeBytes;
if (!GetDiskFreeSpaceEx("\\\\hrjukina\\c$\\",&FreeBytesAvailableToCaller,&TotalNumberOfBytes,&TotalNumberOfFreeBytes))
{
printf("Error Ex!!!\n");
}
else
{
uni64 tst;
tst.x = 0;
tst.y = TotalNumberOfFreeBytes;
_i64toa(tst.x,str,10);
MessageBox(0,str,"",0);
}
return 0;
}

Вполне возможно вопрос ламерский . Сильно не ругайте
...
Рейтинг: 0 / 0
19.12.2005, 18:00
    #33444979
rrrrrrrrrr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск Thead от имени другого пользователя
Если подойдет (правда, Паскаль, но разобраться можно)
...
Рейтинг: 0 / 0
19.12.2005, 18:15
    #33445008
Lacrim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск Thead от имени другого пользователя
cap83
Вполне возможно вопрос ламерский . Сильно не ругайте

Вопрос совсем не ламерский.
Судя по количесту ответов здесь немногие могут чем-то помочь и
направить в нужном направлении в этом вопросе!
...
Рейтинг: 0 / 0
19.12.2005, 23:51
    #33445351
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск Thead от имени другого пользователя
cap83
Вполне возможно вопрос ламерский . Сильно не ругайте

треду можно дать имя а вот пороль врядли. Скорее все вам процесс нужно запустить, а в нем делать все что угодно.
...
Рейтинг: 0 / 0
20.12.2005, 00:23
    #33445366
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск Thead от имени другого пользователя
На сколько я знаю, именно тред нельзя запустить под другим аккаунтом.
Только процесс.
...
Рейтинг: 0 / 0
20.12.2005, 14:00
    #33446620
_Балтика
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск Thead от имени другого пользователя
Возможно GetDiskFreeSpaceEx успевает вызываться до вызова SetThreadToken.
Попробуй так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
hThread = CreateThread(
NULL,
 0 ,
ThreadFunc,
&dwThrdParam,
CREATE_SUSPENDED,
&dwThreadId);
...
Рейтинг: 0 / 0
20.12.2005, 15:53
    #33447057
rrrrrrrrrr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск Thead от имени другого пользователя
А нет желания сначала замапить сетевой ресурс на этот компьютер, потом получить размер диска, затем отсоединить? Ну, т.е.
Код: plaintext
1.
2.
3.
4.
5.
6.
DWORD WNetAddConnection2(

    LPNETRESOURCE lpNetResource,	// points to structure that specifies connection details
    LPCTSTR lpPassword,	// points to password string
    LPCTSTR lpUsername,	// points to user name string
    DWORD dwFlags 	// set of bit flags that specify connection options
   );
и
Код: plaintext
1.
2.
3.
4.
5.
DWORD WNetCancelConnection2(

    LPTSTR lpName,	// pointer to resource name to disconnect 
    DWORD dwFlags,	// connection type flags 
    BOOL fForce 	// flag for unconditional disconnect 
   );
Все равно ведь вам нужен логин по сети, а не локально (как это происходит при имперсонации).
...
Рейтинг: 0 / 0
21.12.2005, 14:51
    #33449503
saint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск Thead от имени другого пользователя
для полного счастья есть еще:

BOOL CreateProcessWithLogonW(
LPCWSTR lpUsername,
LPCWSTR lpDomain,
LPCWSTR lpPassword,
DWORD dwLogonFlags,
LPCWSTR lpApplicationName,
LPWSTR lpCommandLine,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCWSTR lpCurrentDirectory,
LPSTARTUPINFOW lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInfo
);
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запуск Thead от имени другого пользователя / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]