-
Доброго времени суток, столкнулся с такой проблемой: занимаюсь разработкой программы на предприятии, которая могла бы запускать некоторые приложения с правами одмина.
Рылся в сети, нашел пример решения, но он мне не совсем подходит:
function CreateProcessWithLogonW(user:pwidechar; domain:pwidechar; passw:pwidechar; flags: DWORD; lpApplicationName: PwideChar; lpCommandLine: PwideChar; dwCreationFlags: DWORD; lpEnvironment: Pointer; lpCurrentDirectory: PWideChar; const lpStartupInfo: TStartupInfo; var lpProcessInformation: TProcessInformation): BOOL; stdcall;external 'advapi32.dll' name 'CreateProcessWithLogonW';
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var si: TSTARTUPINFO; pif: PROCESS_INFORMATION; begin si.cb := SizeOf(tstartupinfo); si.dwFlags := STARTF_USESHOWWINDOW; si.wShowWindow := SW_SHOWDEFAULT; si.lpReserved := nil; si.lpDesktop := nil; si.lpTitle := nil;
CreateProcessWithLogonW('test', nil, 'password', 0, nil, 'notepad.exe',0, nil, nil, si, pif); end;
не подходит потому что в данном примере жестко задается имя пользователя и пароль, а задача такова, что нужно эти данные брать из файла на сервере. Может кто сталкивался с такой проблемой, может кто знает, какую нить процедурку для решения подобной задачи, помогите пожалуйста. зарание благодарен.
-
вопрос по-человечески сформулируйте. пока только увидел 1 вопрос
> могла бы запускать некоторые приложения с правами одмина.
решение приведено в тексте вопроса.
-
Удалено модератором
-
Удалено модератором
-
> решение приведено в тексте вопроса.
Я же объяснил, что данный код мне не подходит, нужно имя пользователя и пароль из внешнего ресурса брать, например из файла или записи реестра.
-
> нужно имя пользователя и пароль из внешнего ресурса брать
Бери, кто мешает ?
> занимаюсь разработкой программы на предприятии,
Бедное предприятие.
-
> Рылся .. нашел пример
> может кто знает, какую нить процедурку
С миру по нитке - лысому на гребешок ?
Сам-то ты что-то сделал ли для продвижения к цели ?
-
> например из файла
sl: TStringList; .. sl.LoadFromFile(путь к файлу);
-
> Jeer © (18.12.08 18:25) [5]
Твоя вторая фраза, как раз и составляла [3] :( Ну это так. Без претензий к кому-либо.
-
можно обойтись без программы, просто запускать bat-файл, который будет содержать команду runas.
Вот только задумайтесь хотя бы на секунду что вы вообще делаете? Вы ж выдаете пользователю не админу логин/пароль админа!! бред.
Если такая задаче реально есть - надо сделать сервис, который уже будет стартовать с нужными правами и будет иметь интерфейс для требования запуска стороннего приложения по требованию. Так и MS решает подобные задачи, например в штатном инсталляторе.
Хотя опять же есть подозрение, что что-то в этой схеме в данном случае явно криво: не зря ж исходный пользователь не админ. А если ему надо выполнять действия доступные лишь админу - то почему он не админ - тоже не понятно.
-
> А если ему надо выполнять действия доступные лишь админу > - то почему он не админ - тоже не понятно.
А не админ он по многим причинам... все перечислять не имеет смысла, скажу лишь одно, что такая политика безопасности.
-
Которую ты хочешь нарушить.
|