Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/26: Рейтинг темы: голосов - 26, средняя оценка - 4.62
 Аватар для kolay_ne
16 / 18 / 11
Регистрация: 07.03.2016
Сообщений: 362

Запрос прав админа

14.07.2017, 12:24. Показов 5257. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Некоторые программы должны иметь разный уровень доступа в зависимости от ситуации. Например, WinRar. Просто так ему нужен обычный доступ. Но если я прошу его распаковать файлы, например, в корень диска C, то он спрашивает у меня права админа. Ясно, что WinRar написан не на Паскале, но я надеюсь, что в нем тоже есть какая-нибудь штука, которая запрашивает права админа.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.07.2017, 12:24
Ответы с готовыми решениями:

Программы требующие прав админа запускаются только когда жму - "запуск от имени админа"
Вместо тысячи слов - http://vk.com/video96441850_171277481?z=video96441850_171277481%2Falbum96441850 Программы требующие прав админа...

Запуск программы без прав админа из программы с правами админа
Всем доброго времени суток... Проблема: Есть главная программа запущенная с правами админа и если из нее запустить скайп то он...

У админа нет админских прав
Доброго времени суток. Проблема в том что при установке программ(в данном случае антивирусов) в процессе установки выходит окошко с...

31
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33404 / 21514 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 12
14.07.2017, 12:33
Меня больше интересует, почему вопрос задается здесь? Ты запускаешь WinRAR из своего приложения на Паскале, что-ли? Если нет - то теме место в разделе по Windows где-нибудь.
0
 Аватар для kolay_ne
16 / 18 / 11
Регистрация: 07.03.2016
Сообщений: 362
14.07.2017, 12:37  [ТС]
volvo, Почему? Код-то на паскале...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33404 / 21514 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 12
14.07.2017, 13:22
Где код-то? Чей код на Паскале? Я и спрашиваю, ты что, из своего приложения запускаешь WinRAR? Что за люди. Упорно читают только последние несколько слов в посте...
0
 Аватар для Zwelenewskiy
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
14.07.2017, 13:28
volvo, нужно программно сделать так,чтобы запуск программы,написанной на Паскале, осуществлялся с запросом прав администратора
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33404 / 21514 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 12
14.07.2017, 13:30
Это твое мнение. Мне нужен ответ ТС-а, что нужно ему.
0
 Аватар для kolay_ne
16 / 18 / 11
Регистрация: 07.03.2016
Сообщений: 362
14.07.2017, 13:43  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
ты что, из своего приложения запускаешь WinRAR?
Нет, не запускаю. Но код, в котором мне это нужно - на паскале. WinRar был дан просто как пример программы, которая так умеет.

Не по теме:

Цитата Сообщение от volvo Посмотреть сообщение
Упорно читают только последние несколько слов в посте...
А вот и нет. Я очень люблю читать длинные тексты...



Добавлено через 1 минуту
Цитата Сообщение от volvo Посмотреть сообщение
Мне нужен ответ ТС-а, что нужно ему
Ну... Если он посчитает, что ему надо переместить тему, он ее переместит... Нет?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33404 / 21514 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 12
14.07.2017, 13:55
Цитата Сообщение от kolay_ne Посмотреть сообщение
Но код, в котором мне это нужно - на паскале
Ты нормально вопрос задать можешь? Чего надо-то в итоге? Покажи код, чтобы было понятнее, о чем речь вообще. Приплел какой-то WinRAR ни к селу ни к городу. Оказывается, он и не нужен вообще. А если б я начал писать код, который дает права админа WinRAR-у. Его что потом, выкинуть, ибо тебе он, оказывается, и ни к чему?

Короче так: нет конкретного кода (полного кода, который можно взять, откомпилировать и запустить, а не терять часы на выяснение, какого типа та или иная переменная, или где описано то или иное) с комментариями "вот так я запускаю, оно не работает, мне надо чтобы вот это и это было с правами администратора" - иди в Гугл и ищи форумы телепатов. Надоело.
0
 Аватар для kolay_ne
16 / 18 / 11
Регистрация: 07.03.2016
Сообщений: 362
14.07.2017, 17:27  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Ты нормально вопрос задать можешь? Чего надо-то в итоге?
Надо чтобы программа получила админские права так, как это делает WinRar если попросить его извлечь в админскую папку.
Цитата Сообщение от volvo Посмотреть сообщение
Покажи кусок кода, чтобы было понятнее, о чем речь вообще
Во-первых, кода еще нет, во-вторых, эта задача вообще не связана с остальным кодом.
Цитата Сообщение от volvo Посмотреть сообщение
А если б я начал писать код, который дает права админа WinRAR-у
WinRar сам себе делает права админа. А я хочу так же. Поэтому про него написал.
Цитата Сообщение от volvo Посмотреть сообщение
иди в Гугл и ищи
Пробовал

Не по теме:

Цитата Сообщение от volvo Посмотреть сообщение
форумы телепатов
Боюсь, таких не существует. По крайней мере, открыто они об этом не заявляют. Да и вообще не хочу с ними связываться - мало ли что лишнее прочитают... ;)



Добавлено через 3 часа 21 минуту
volvo, Так как сделать запрос на админские права?
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
17.07.2017, 16:39
Цитата Сообщение от kolay_ne Посмотреть сообщение
Некоторые программы должны иметь разный уровень доступа в зависимости от ситуации. Например, WinRar. Просто так ему нужен обычный доступ. Но если я прошу его распаковать файлы, например, в корень диска C, то он спрашивает у меня права админа. Ясно, что WinRar написан не на Паскале, но я надеюсь, что в нем тоже есть какая-нибудь штука, которая запрашивает права админа.
Просто поменять что-то в настройках WinRAR программно через Pascal что ли?
0
 Аватар для Zwelenewskiy
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
17.07.2017, 16:56
Volobuev Ilya, WinRAR вообще никак в делу не относится)) Нужно сделать так,чтобы при запуске программы у нее появлялись права админа
0
 Аватар для kolay_ne
16 / 18 / 11
Регистрация: 07.03.2016
Сообщений: 362
17.07.2017, 17:14  [ТС]
Volobuev Ilya,
Цитата Сообщение от Zwelenewskiy Посмотреть сообщение
Нужно сделать так,чтобы при запуске программы у нее появлялись права админа
Точно так
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
17.07.2017, 20:57
Лучший ответ Сообщение было отмечено kolay_ne как решение

Решение

по правой кнопке мыши - запуск с правами системного администратора уже не катит?
тогда как-то так:
https://msdn.microsoft.com/ru-... px#Примеры
и
https://social.msdn.microsoft.... m=winforms
Pascal
1
2
3
4
5
6
7
8
9
10
11
uses System.Diagnostics;
begin
  var t:ProcessStartInfo:=new ProcessStartInfo('c:\windows\notepad.exe');
  t.UseShellExecute:=true;
  t.Verb:='runas';
  try
    Process.Start(t);
  except 
    writeln('ошибка');
  end;
end.
1
 Аватар для kolay_ne
16 / 18 / 11
Регистрация: 07.03.2016
Сообщений: 362
17.07.2017, 22:23  [ТС]
Joy, нет, я имел в виду _запрос_ на права админа для _меня_. То бишь я хочу чтобы мой процесс получил права админа. Я хочу чтобы пользователь увидел системный запрос на права админа для моего приложения.

Добавлено через 9 минут
Вот, например, я запускаю установщик чего-нибудь. Первое, что я вижу (не считая всяких предупреждений от браузера) - окошко в серединке (когда остальная часть экрана затемнена), которое спрашивает, разрешаю ли я ей запуститься с правами админа
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33404 / 21514 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 12
17.07.2017, 22:53
Цитата Сообщение от kolay_ne Посмотреть сообщение
права админа для _меня_
получаются добавлением манифеста, в котором указывается, что приложению нужны права админа. Раз и навсегда. При старте. Изменить это в середине работы уже нельзя.
0
 Аватар для kolay_ne
16 / 18 / 11
Регистрация: 07.03.2016
Сообщений: 362
18.07.2017, 08:28  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
получаются добавлением манифеста, в котором указывается, что приложению нужны права админа
Ура!!! Слушайте, неужели я действительно так плохо объясняю, что только через три дня после создания темы мы дошли до этого? Мне кажется, мне это и нужно! Как это сделать?

Не по теме:

Как же тогда работает WinRar? Я его запускаю, он работает как обычно, а потом, когда ему нужны права админа, он показывает запрос на права админа...

0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
18.07.2017, 14:36
Цитата Сообщение от kolay_ne Посмотреть сообщение
Как же тогда работает WinRar? Я его запускаю, он работает как обычно, а потом, когда ему нужны права админа, он показывает запрос на права админа...
Могу предположить, что WinRAR и другие программы действуют по примерно следующему алгоритму.

1. Изначально программа запускается без запроса на повышение прав ('asInvoker' в манифесте).

2. При попытке, например, создать файл где-нибудь в системной папке соответствующая функция
(CreateFile) возвращает FALSE (ошибка), при этом GetLastError() == 5, т.е. 'ERROR_ACCESS_DENIED'.

3. Программа видит, что администраторских прав у нее нету (access token процесса не
содержит enabled-группу "Администраторы" - S-1-5-32-544), поэтому перезапускает себя
через ShellExecute(Ex) с командой "runas".

Между пп. 2 и 3 можно, кстати, вывести окошечко с запросом и кнопочкой, а на кнопочке
нарисовать UAC-шильдик (за это отвечает оконное сообщение BCM_SETSHIELD).

Вместо перезапуска в некоторых случаях можно использовать "COM Elevation Moniker", хотя это сложнее.
2
0 / 0 / 0
Регистрация: 19.12.2019
Сообщений: 11
16.01.2020, 14:24
Подозреваю, что это наиболее близкая тема, к той что мне нужна. Дабы не создавать новую, реанимирую эту.

Чтоб разговор не был беспредметным вот код:
Кликните здесь для просмотра всего текста
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
uses System;
var
  diskName, fileName : string;
  freeSpace : int64;
  fStream : System.IO.FileStream;
begin
  Console.Write('On which disk to create file? Enter the letter: ');
  diskName := Console.ReadLine();
  freeSpace := DiskFree(diskName);
  if freeSpace > 0 then begin
    fileName := diskName+':\xxxx.bin';
    try
      fStream := System.IO.File.Create(fileName);
      freeSpace := DiskFree(diskName);
      fStream.WriteByte(255);
      fStream.Close;
      fStream.Dispose();
    except
      Console.WriteLine('File create error. Need admin rights?');
    end;
  end else begin
    Console.WriteLine('Free space error or wrong letter.');
  end;
  Console.Write('Press any key to quit.');
  Console.ReadKey();
end.


Приложение не создает файл xxxx.bin, но если его запустить с правами админа, то создает.

Дело в том, что со временем я могу об этом забыть, поэтому вопрос такой: как внутрь этой программы прописать запрос на права администратора?. Ну или как сделать так, чтоб файл создавался без прав администратора.

Если все сведется к манифесту, то мой Гугл не знает как его делать и внедрять в exe-файл, поэтому будьте любезны, дайте ссылку.
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
16.01.2020, 15:37
Боже, что за суржик древнепаскального и чрезмерно .Net-ного...

1. var должен быть после begin. Локальные переменные и по памяти, и по скорости лучше глобальных.

2. Проверять через DiskFree - говнокод. Посмотрите на System.Environment.GetLogicalDrives.

Если перевести на язык нормальных людей:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
begin
  var diskName := ReadString('On which disk to create file?{#10}Enter the letter:');
  diskName += ':\';
  
  if not System.Environment.GetLogicalDrives.Contains(diskName) then
    Writeln('Disk not found.') else
  begin
    var fileName := $'{diskName}xxxx.bin';
    try
      // Лучше создавать сразу BinaryWriter, раз файл бинарный
      var bw := new System.IO.BinaryWriter(System.IO.File.Create(fileName));
      bw.Write(byte(255));
      bw.Close;
//      bw.Dispose; // а это ни к чему, пока вы по несколько тысяч файлов в сек не создаёте
    except
      // Ловить и гасить все исключения - плохо
      // Если б вы заглянули на msdn - узнали бы что при нехватке прав бросается только это:
      on e: System.UnauthorizedAccessException do
        Writeln(e);
    end;
  end;
  
  ReadString('Press any key to quit.');
end.
---
Теперь по изначальному вопросу:

Для того чтоб засунуть манифест в .exe - используются специальные программы. Я обычно использую программу от малакасофта. Если поставите студию - она идёт в комплекте.

Но вообще это не обязательно. Можно создать файл *ИмяПрограммы*.exe.manifest рядом с .exe (в той же папке) и это уже будет работать. Но манифест применяется только 1 раз при каждом запуске .exe, поэтому если и делать это той же программой, к которой он применяется - придётся перезапустить её.

Если вам надо создать 1 файл с правами админа, а потом вернуться к обычным правам - запускайте текущий .exe ещё раз, передавая какие то специальные аргументы командной строки. А прямо при старте программы ловите эти аргументы и вместе обычного запуска - создавайте тот 1 файл.
1
0 / 0 / 0
Регистрация: 19.12.2019
Сообщений: 11
16.01.2020, 16:31
Sun Serega, СПАСИБО (В посте не ткнулось, говорю так) за красивый код.

Расположение *ИмяПрограммы*.exe.manifest радом с .exe ни на что не повлияло (может из-за win7?).
Пока скачал .res файл с манифестом, отредактировал в РесурсХакере, добавил в исходник паскаля строку
{$resource rc.res} - это все не помогло

Завтра попробую интегрировать манифест через мелкомягкую студию. О результатах отпишусь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.01.2020, 16:31
Помогаю со студенческими работами здесь

У админа нет админских прав
Слушайте, это ужас какой-то - в системе только один пользователь и отображается как админ, но бывает при попытке сделать кое-какие опреции...

Регистрация компонентов без прав админа
Доброго времени суток, форумчане! Столкнулся со следующей проблемой. На работе у пользователей нет прав админа. Как без прав...

У локального админа нет своих прав
Доброго времени суток! Ситуация такая. У меня есть учетная запись пользователя домена и учетная запись локального администратора в...

Проверка прав админа и выполнение команд
Подскажите как сделать если батник запущен с правами администратора то выполнить: RDPWInst -i calc.exe notepad.exe Если запущен без...

Предоставление прав локального админа на ПК домена
Имеется парк компьютеров введенных в домен. Необходимо предоставить права локального администратора нескольким пользователям, для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru