ProgramFiles, UAC, права Администратора...

Модератор: Модераторы

Re: ProgramFiles, UAC, права Администратора...

Сообщение VirusFree » 12.03.2012 00:28:26

Последний раз редактировалось VirusFree 12.03.2012 00:34:27, всего редактировалось 1 раз.
VirusFree
новенький
 
Сообщения: 11
Зарегистрирован: 22.07.2011 03:11:56

Re: ProgramFiles, UAC, права Администратора...

Сообщение vitaly_l » 12.03.2012 00:32:30

VirusFree писал(а):c:>cacls /?


Не понял: Как дать другим права???
Если можно, опишите чуть более развёрнуто, пожалуйста.


.

Добавлено спустя 22 минуты:
VirusFree писал(а):http://tudimon.com/2010/12/25/izmenenie-ntfs-prav-na-papki-i-fayly-iz-komandnoy-stroki.html


УРА, это по ходу, то что нужно!
Это не то, что я искал, но это: НАМНОГО ЛУЧШЕ.
РЕСПЕКТ
VirusFree писал(а):c:\>cacls /?
и ГРОМАДНОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО...

Если есть ещё другие варианты пишите, не пропадёт.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: ProgramFiles, UAC, права Администратора...

Сообщение alexey38 » 12.03.2012 10:01:04

Я уже писал, повторю еще раз.
1. Права доступа на создаваемый файл наследуются от прав на папку (каталог), где этот файл находится.

2. Запуск программы из другой программы может выполняться с указанием имени пользователя. Чтобы запустить от имени юзера, нужно указать логин этого юзера. Способ примерно такой же как и запускать от имени админа. Логин юзера можно получить по списку переменных (set, GetEnviroment...).

Если что непонятно, задавайте вопрос более конкретно.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: ProgramFiles, UAC, права Администратора...

Сообщение Brainenjii » 12.03.2012 10:40:20

Если у вас свой инсталлятор - разбейте его на 2 процесса. Первый работает без прав админа, инициирует второй (который уже получит требуемые права и проведёт, собственно, установку), и затем запустит приложение под правами пользователя. В своё время столкнулся с такой же проблемой (пользовал Inno setup) - оно запускалось только от имени администратора и соответственно первый запуск был под админом и приложение получало директорию администратора. Решил обойтись без галочки "запустить после установки"...
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: ProgramFiles, UAC, права Администратора...

Сообщение vitaly_l » 12.03.2012 10:49:40

Brainenjii писал(а):Решил обойтись без галочки "запустить после установки"...

Это один из вариантов решения, но он очень обидный...
Хочется, чтобы приложение после инсталяции - запускалось и работало.

alexey38 писал(а):Запуск программы из другой программы может выполняться с указанием имени пользователя.

Это верное решение, как это сделать???
Какая функция даёт такую возможность???

cacls - выполняет всё что нужно, но там есть минус для разноязычных систем разное понятие переменной "все" или "all"...
Administrator или Администратор... итд.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: ProgramFiles, UAC, права Администратора...

Сообщение VirusFree » 12.03.2012 14:16:24

Вам и советуют разбить на 2 процесса
1 - инсталлятор с правами админа
2 - запуск программы с правами юзера

Код: Выделить всё
begin
   RunAsAdmin ... // инсталлируйте, дождитесь окончания процесса или что там у вас
........   
   далее запускайте инсталлированную программу
........
end;
VirusFree
новенький
 
Сообщения: 11
Зарегистрирован: 22.07.2011 03:11:56

Re: ProgramFiles, UAC, права Администратора...

Сообщение vitaly_l » 12.03.2012 14:28:23

VirusFree писал(а):Вам и советуют разбить на 2 процесса1 - инсталлятор с правами админа2 - запуск программы с правами юзера


Ага понял как правильно задать вопрос:
1) инсталлятор с правами админа - сделал он работает.
2) запуск программы с правами юзера - как сделать??? (из инсталятора у которого права админа)
Инсталятор передаёт права админа программе... <<<--- Вот в чём суть...

cacsl который Вы предложили может сделать, то что требуется
и поменять установки созданные программой (запущенной инсталлятором),
а именно: cacls FileNameOrDir /G /E все:F - обращаю вниманте на надпись (группу) "все", в англоязычной версии это будет "all"
или чёрт знает что, если user сам сменит название...
Можно сделать: for i := 0 to AllUser.Count-1 do cacls FileNameOrDir /G /E AllUser[i]:F, но я не умею вычислять AllUser.Add(UserName)???...

Самым правильным решением будет: Сделать запуск программы с правами юзера (не админа)....
Как запустить программу с правами user'a ???

СПАСИТЕ - ПОМОГИТЕ.... или убейте Блин-Гейтца!
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: ProgramFiles, UAC, права Администратора...

Сообщение Mr.Smart » 12.03.2012 15:19:32

vitaly_l, а может всё таки не выдумывать "велосипед"? Переложить установку программы на готовый интсалятор? Например, Inno Setup?
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: ProgramFiles, UAC, права Администратора...

Сообщение vitaly_l » 12.03.2012 15:28:29

Ну нееееет!
Я лучше сделаю два ini файла один с правами админа другой без прав админа,
но программа будет запукаться моим инсталятором.

Лично мне гораздо сложнее изучить: Inno Setup итп.
Кстати, если Вы прочитаете несколько коментов Выше, то увидите, что, у Inno Setup - таже самая проблема...

Как запустить программу с правами user'a, если её запускает программа с правами админа ???

СПАСИТЕ - ПОМОГИТЕ.... или убейте Блин-Гейтца!
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: ProgramFiles, UAC, права Администратора...

Сообщение stikriz » 12.03.2012 15:51:47

Выше же сказали. Сделать маленький exe, назвать его Setup.exe, который запустит _Setup.exe, который возьмет себе нужные права, установит программу, а потом из Setup.exe запустить программу.
Аватара пользователя
stikriz
энтузиаст
 
Сообщения: 612
Зарегистрирован: 15.03.2006 09:37:47

Re: ProgramFiles, UAC, права Администратора...

Сообщение vitaly_l » 12.03.2012 16:01:08

Целую в щёчку!
Это: 100% - будет работать.
Если отследить когда _Setup.exe закончит работу...
А это делает: WaitForSingleObject(pi.hProcess,INFINITE); Правильно???

СПА-СИ-БО! ОГРОМАДНЕЙШЕЕ - БОЛЬШОЕ ЧЕЛОВЕЧЕСКОЕ!!!

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: ProgramFiles, UAC, права Администратора...

Сообщение v-t-l » 12.03.2012 17:44:46

v-t-l
энтузиаст
 
Сообщения: 735
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: ProgramFiles, UAC, права Администратора...

Сообщение alexey38 » 12.03.2012 18:09:05

vitaly_l писал(а):
alexey38 писал(а):Запуск программы из другой программы может выполняться с указанием имени пользователя.

Это верное решение, как это сделать???
Какая функция даёт такую возможность???


Я использовал CreateProcessWithLogonW и CreateProcessAsUser, в интернете найдите описание параметров. Я использовал для повышения прав, но можно и для понижения.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: ProgramFiles, UAC, права Администратора...

Сообщение vitaly_l » 12.03.2012 19:18:46

alexey38 писал(а):Я использовал CreateProcessWithLogonW

Да - это сработает, но для выполнения нужно знать: User, Domain, Password - этого я получать не умею...
alexey38 писал(а):CreateProcessAsUser

Я не очень понимаю, что сделает функция CreateProcessAsUser в сравнеии с CreateProcess? Как она сменит права админа?

Вариант с "подменой" setup'ов (на данном этапе) самый приемлемый, т.к. даёт 100% гарантию, за исключением одного случая:
когда user сам изначально запускает программу с правами Админа... и тогда натупает...

СПАСИТЕ - ПОМОГИТЕ.... или убейте Блин-Гейтца!


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: ProgramFiles, UAC, права Администратора...

Сообщение Brainenjii » 12.03.2012 19:37:14

этот случай можете предусмотреть в приложении (я так уже понял, что необходимость совершать кучу телодвижений, ради запуска после установки вас не пугает). Из инсталлера не просто запускать программу, а запускать её с флагом --first-launch. В приложении, смотрите - а не имеет ли админских прав текущий пользователь (примеров масса в гугле), и если имеет, да ещё и флаг --first-launch наличествует - показывать большое-большое сообщение - "Пользователь! Перезапусти!".
// а ведь пользователь даже не будет догадываться, через какую прорву костылей он получает заветное приложение ^_^
P.S. а особо рьяный костылюб может усовершенствовать предыдущее приложение ^_^
1. Узнать, какие пользователи залогинены (в WinAPI не силен, я бы пропарсил список запущенных процессов из tasklisk -v и выбрал среди них пользователей с запущенным explorer.exe
2. Для каждого из этих пользователей создать назначенное задание для запуска приложения через 1 секунду
3. ...
4. PROFIT!
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Пред.След.

Вернуться в Файловая система

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

Рейтинг@Mail.ru