Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск программы от имени другово пользователя, RunAs в Win XP 
:(
    Опции темы
DonPager
Дата 28.3.2003, 19:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Вопрос таков:
Как запустить программу от имени другово пользователя,
т.е. имеется программа на вход которой посылается путь к другой программе,
и она в свою очередь запускает заданную программу от имени другово юзера.

Вот собственно и всё что хотелось знать.
З.Ы. пишите популярней withstupid.gif
  Вверх
man2002ua
Дата 28.3.2003, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 943
Регистрация: 12.11.2002
Где: Киев

Репутация: нет
Всего: 2



CreateProcessAsUser + LogonUser
никогда не пользовался, не было необходимости...


--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
DonPager
Дата 28.3.2003, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Колдырь
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 28.3.2003
Где: Воронеж

Репутация: нет
Всего: 2



Может Я что нетак делаю но этот код нефига не работает:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
a :Thandle;
b : TStartupInfo;
c : TProcessInformation;
UserName,
AppName,
Domain,
Passw:PAnsiChar;
begin
Username := PChar(Edit1.Text);
Domain := PChar('Domen');
Passw := PChar(Edit2.Text);
AppName := PChar('cmd');
if LogonUser(Username, Domain, Passw, LOGON32_LOGON_INTERACTIVE,
              LOGON32_PROVIDER_WINNT50,a)
 then
  begin
   Application.MessageBox('','logon OK',MB_Ok);
   if CreateProcessAsUser(a,AppName,'',nil,nil,true,0,nil,'c:\',b,c)
    then Application.MessageBox('','Start OK',MB_Ok)
    else Application.MessageBox('','ERROR',MB_Ok);
  end;
end;



--------------------
кодер + лодырь = колдырь
PM MAIL ICQ Skype GTalk   Вверх
man2002ua
Дата 28.3.2003, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 943
Регистрация: 12.11.2002
Где: Киев

Репутация: нет
Всего: 2



Мда, нехватает привилегий... SE_TCB_PRIVILEGE... Удивительно конечно. К сожадению я не могу дать себе привилегию эту программно, т.к. подключен к серверу как звычайный юзер sad.gif

Ладно, если у тебя 2K или XP - скажи, и я дам другой пример. На Си говоришь или в паскаль переводить?

Это сообщение отредактировал(а) man2002ua - 28.3.2003, 23:54


--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
DonPager
Дата 29.3.2003, 02:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Колдырь
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 28.3.2003
Где: Воронеж

Репутация: нет
Всего: 2



у меня ХР.
если не влом, то лучше переведи,
но если нет желания, то можно и в С


--------------------
кодер + лодырь = колдырь
PM MAIL ICQ Skype GTalk   Вверх
man2002ua
Дата 29.3.2003, 03:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 943
Регистрация: 12.11.2002
Где: Киев

Репутация: нет
Всего: 2



Если честно - влом. Да и код простой...

Код
#include <windows.h>
#define UNICODE

typedef BOOL WINAPI CreateProcessWithLogonW(
 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]
);

void main(void)
{
 char err[256];
 HANDLE hToken, A;
 STARTUPINFOW si = {sizeof(STARTUPINFOW)};
 PROCESS_INFORMATION pi;
 LPVOID W;    
 wchar_t *pName = L"C:\\winnt\\system32\\calc.exe";
 wchar_t *aName = L"Администратор";
 wchar_t *aPassw = L"";
 wchar_t *aSrv = L"MAN";
 BOOL rez;

 HINSTANCE Hlib = LoadLibrary("c:\\winnt\\system32\\advapi32.dll");
 if(!Hlib){
         MessageBox(0,"Lib error","!",0);
         return;
 }
 W = GetProcAddress(Hlib,"CreateProcessWithLogonW");

 rez = ((CreateProcessWithLogonW*)W)(aName,aSrv,aPassw,1,
         pName,pName,0,NULL,NULL,&si, &pi);
 if(rez == 0){
      wsprintf(err, "Error [%ld] creating process!", GetLastError());
      MessageBox(0, err, "Error", 0);
 }
 return;
}



--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
DonPager
Дата 29.3.2003, 04:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Колдырь
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 28.3.2003
Где: Воронеж

Репутация: нет
Всего: 2



sad.gif
всё также плохо..
логон проходит, но запуска нет


--------------------
кодер + лодырь = колдырь
PM MAIL ICQ Skype GTalk   Вверх
man2002ua
Дата 29.3.2003, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 943
Регистрация: 12.11.2002
Где: Киев

Репутация: нет
Всего: 2



Код ошибки какой?
У меня калькулятор запустился под другим пользователем (локальным).


--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
DonPager
Дата 29.3.2003, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Колдырь
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 28.3.2003
Где: Воронеж

Репутация: нет
Всего: 2



Код ошибки 1314
ещё впросик :
использование CreatProcessAsUserW или CreatProcessAsUser или CreatProcessAsUserA принципиально?



--------------------
кодер + лодырь = колдырь
PM MAIL ICQ Skype GTalk   Вверх
man2002ua
Дата 29.3.2003, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 943
Регистрация: 12.11.2002
Где: Киев

Репутация: нет
Всего: 2



НЕ понял, у меня 1314 (PRIVILEGE_NOT_HELD) вылезало только при LogonUser, а во втором случае - все как по маслу!
Какие права ты на машине имеешь и какие права имеет юзер, под кем ты запускаешь процесс?


--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
DonPager
Дата 30.3.2003, 02:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Колдырь
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 28.3.2003
Где: Воронеж

Репутация: нет
Всего: 2



тестирую я имея права админа, запуская от юзверя,
а применятся будет с точностью до наоборот
и вопрос открыт :
использование CreatProcessAsUserW или CreatProcessAsUser или CreatProcessAsUserA принципиально?



--------------------
кодер + лодырь = колдырь
PM MAIL ICQ Skype GTalk   Вверх
serious
Дата 30.3.2003, 03:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 15.2.2003
Где: Пенза

Репутация: нет
Всего: 1



Юзверь с правами админа, или я что-то не понял?


--------------------
Я знаю то, что ничего не знаю, а некоторые не знают и этого.
PM MAIL   Вверх
XpyDi
Дата 30.3.2003, 05:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 25.11.2002
Где: USSR

Репутация: нет
Всего: 2



Цитата
CreatProcessAsUserW или CreatProcessAsUser или CreatProcessAsUserA принципиально

Вообще-то такой функции, как CreatProcessAsUser вообще не существует, при компиляции она заменяеться(из-за того что гдето ) на вызов CreatProcessAsUserA(в случае использования ANSI строк) или CreatProcessAsUserW(в случае работы с Unicode строками).

Я делал, как у man2002ua все работало отлично.

Это сообщение отредактировал(а) XpyDi - 30.3.2003, 05:48
PM MAIL WWW ICQ   Вверх
man2002ua
Дата 31.3.2003, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 943
Регистрация: 12.11.2002
Где: Киев

Репутация: нет
Всего: 2



Непонятно, почему у тебя не запускается. А стандартными методами XP, под тем же юзером - получается?


--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
78125
Дата 31.3.2003, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 20.1.2003
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Цитата(serious @ 30.3.2003, 03:02)
Юзверь с правами админа, или я что-то не понял?

Юзверь с правами админна и есть АДМИН biggrin.gif
--------------------
купим подпись
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1152 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.