Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: WinAPI и системное программирование > Запуск программы с правами администратора(исх) |
Автор: ivanfr 23.12.2009, 05:56 | ||
Здравствуйте Нашёл исходник, который запускает программу о имени другого пользователя. В моем случае есть пароль и имя пользователя. Прога компилируется без ошибок, как таковых. Как мне заставить запусть мою программу, при условию что она будет находиться на рабочем столе. (тоесть все в одной папке), будет применяться на разных компах соответственно будут разные пользователи. Программа читает параметры из реестра, чтобы работала нужны права админа. Немогу понять куда, чего вводить?! Как я понял в этом исходнике, нужно вызвать функцию помогите на примере, какой либо другой программы. Исходник
|
Автор: ivanfr 24.12.2009, 05:47 |
На данный момент я решил эту проблему с помощью программы AdmiLink. создав ярлык для запускаемой программы с определенным пользователем админом и его паролем. То есть программа стартует на всех машинах с ограниченными правами, где есть пользователь администратор. Так как обычный юзер не имеет прав админа, то ни чего не может сделать. Чтобы программа запускалась, нужна папка куда можно положить файлы. Я для этих целей использовал папку "общие документы". Теперь, если есть 10 машин с пользователями и на них есть учетная запись админа, например, "админ" с паролем "8888", но сами Юзеры не имеют прав администратора, наша программа будет работать с правами администратора на этих 10 машинах. Жду ваших комментариев по исходному коду, хотелось бы знать как его можно использовать.... ![]() |
Автор: Keeper89 27.12.2009, 15:42 |
Ссылки в тему:
|
Автор: Virtuals 5.1.2010, 12:22 |
ivanfr, 1 зачем тебе LogonUser? - CreateProcessWithLogon сам его делает ;) (кстати как и многое другое, тоесть загрузку профиля и переменных окружения) 2. используй для анализа ошибок OSError(SysErrorMessage(GetLastError) ) думаю информативней будет ![]() ЗЫ а служба то вообще запущена? ибо CreateProcessWithLogonW это всего лиш оболочка вызова службы seclogon ;) |
Автор: ivanfr 11.1.2010, 09:06 | ||
Данный код стартует приложение, но при этом выводит сообщение куда нужно ввести имя пользователя и пароль. Вопрос в следующем можно ли все это сделать программно чтобы пользователь ни чего не видел. Да, и ещё откуда он берет путь? как я опять же понял непосредственно тот путь, откуда запускается сам программа.
|
Автор: ivanfr 14.1.2010, 09:20 |
Нашёл еще одно решение с воей проблемы. Можно использовать утилиту psexec от Марк Руссинович (Mark Russinovich) http://technet.microsoft.com/ru-ru/sysinternals/bb897553.aspx#top Копирует на удаленную машину вашу программу и запустить ее. |
Автор: Virtuals 24.1.2010, 15:17 | ||
ivanfr, на ленивец. код рабочий
|
Автор: ivanfr 29.1.2010, 09:39 |
Блин, ну я ей уже воспользовался добавив, пользовотеля и пароль, путь перед этой строкой ExitCode:=RunProcessAs(ParamStr(b),t,Username,Password,Domain,WorkingDir); У меня запускалось. Только вот проблема была в другом. Моя софтина должна была кидать инфу на новел диски, а они блин из под пользователя админа не работаю так, как на новеловском сервере нет такого юзера... и соответсвтенно дисков тоже.. Но все равно спасибо может пригодиться. Но для начала нужно потестить что там вы мне за иходник привели. |
Автор: ivanfr 29.1.2010, 10:33 | ||||
Думаю нужно вот так:
А еще матерится на строки
/// [Pascal Error] Unit5.pas(52): E2003 Undeclared identifier: 'ERRLog' [Pascal Error] Unit5.pas(54): E2003 Undeclared identifier: 'CreateProcessWithLogonW' [Pascal Fatal Error] Project5.dpr(5): F2063 Could not compile used unit 'Unit5.pas' Как испрвавить!? |