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

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

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

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

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

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


"Пилите, Шура, пилите. Они золотые!" (copyright reserverd)
...
Рейтинг: 0 / 0
Запуск Thead от имени другого пользователя
    #33444893
Фотография cap83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Запуск Thead от имени другого пользователя
    #33444979
Фотография rrrrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если подойдет (правда, Паскаль, но разобраться можно)
...
Рейтинг: 0 / 0
Запуск Thead от имени другого пользователя
    #33445008
Lacrim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cap83
Вполне возможно вопрос ламерский . Сильно не ругайте

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

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

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
14 сообщений из 14, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запуск Thead от имени другого пользователя
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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