Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

ЗапускПриложения с правами админа

ЗапускПриложения с правами админа
Я
   perlharbor
 
22.05.21 - 19:18
Всем привет. На сервере у меня стоят админские права. Хочу открыть файл с повышенными правами. Есть в cmd какая-нибудь команда для этого? Пишу в 1с что-то наподобии
КомандаСистемы("runas /user:%username% "мойфайл.exe"").
Запрашивает пароль... Хочу чтоб без пароля. Ну или на крайний случай чтоб после выполнения команды можно было пароль передать из 1с
   acht
 
1 - 22.05.21 - 21:45
powershell Start Notepad.exe -ArgumentList "d:\1.txt" -Verb Runas
   pechkin
 
2 - 23.05.21 - 09:04
Была раньше какая то прога для этого.
Типовыми средствами винды так не сделаешь
   pechkin
 
3 - 23.05.21 - 09:04
   perlharbor
 
4 - 23.05.21 - 14:34
(1) А как можно программу с параметрами запустить? Например такую - mstsc /shadow:1 /v:localhost
   pechkin
 
5 - 23.05.21 - 14:50
(1) так для терминального клиента же можно файл настроек создать и юзера там прописать
   acht
 
6 - 23.05.21 - 14:55
(4) Через значение параметра ArgumentList пробовал?
   acht
 
7 - 23.05.21 - 14:56
А вообще тебе чего надо - повышения уровня своих привелегий через UAC или запуск от другого пользователя с его правами?
   perlharbor
 
8 - 23.05.21 - 15:05
(6) Все,разобрался) В -ArgumentList прописал параметры с тильдой. Всем спасибо)
   Mikhail Volkov
 
9 - 23.05.21 - 20:15
(8) В параметрах писать пароль конкретного админа? Это не хорошо... пароли постоянно меняются. Можно выполнять любое задание под СИСТЕМА командой SchTasks Создать событие Windows из 1С возможно?
   perlharbor
 
10 - 24.05.21 - 15:23
(9) Не, пароль прописывать не нужно. Просто файл открывается с повышенными привилегиями через ps.
Есть еще вопрос. Как-нибудь можно получить соответствие виндового пользователя и пользователя в 1с? Может через какой-нибудь ком объект(без явного заполнения нового реквизита в модуле приложения при запуске системы). Например, через подключение к кластеру, в нем есть список сеансов и компьютер, с которого сеанс запущен. А имени или ид пользователя, вроде бы, нету
   1Сергей
 
11 - 24.05.21 - 15:27
(10) ПользователиИнформационнойБазы.ПолучитьПользователей()
Перебираешь массив и смотришь на реквизит ПользовательОС
   acht
 
12 - 24.05.21 - 15:41
(11) А там внезапно пусто, потому что используется авторизация не ОС а 1С.
При этом прикинь, текущий пользователь ОС не меняется.
   acht
 
13 - 24.05.21 - 15:42
(10) Тебе чего надо-то? Узнать имя пользователя windows, из под которого запущена клиенсткая часть?
   perlharbor
 
14 - 24.05.21 - 15:44
(12) Да)
   perlharbor
 
15 - 24.05.21 - 15:44
(13) Да
   acht
 
16 - 24.05.21 - 15:58
(15) Разбирай вывод whoami.exe. Оно, по-моему, сейчас в винде везде уже есть.
   acht
 
17 - 24.05.21 - 16:05
Ну или вывод 
powershell [System.Security.Principal.WindowsIdentity]::GetCurrent().Name 

Что то же самое
   perlharbor
 
18 - 24.05.21 - 16:16
(16) Как получить список пользователей я знаю. Мне как-то нужно сделать соответствие их с пользователями 1с (имена в терминале и базе данных отличаются)
   1Сергей
 
19 - 24.05.21 - 16:22
(14) Тогда я бы через кластер сделал
   1Сергей
 
20 - 24.05.21 - 16:23
Хотя, пользователя ОС, наверное, оттуда не вытащить... хз в общем
   acht
 
21 - 24.05.21 - 16:25
(18) >  соответствие их с пользователями 1с
Нет такого. Кто мешает пользователю domain\user открыть две 1Ски как Иванов и Петров?
   1Сергей
 
22 - 24.05.21 - 16:29
(21) а с привязкой к сеансу?
   acht
 
23 - 24.05.21 - 16:30
А чтобы узнать текущую комбинацию - парсинг вывода утилит и ИмяПользователя();
   acht
 
24 - 24.05.21 - 16:32
(22) И еще в веб клиенте, ага
   perlharbor
 
25 - 24.05.21 - 16:47
(21) Это скорее исключение. Да даже так устроит
   TormozIT
 
26 - 24.05.21 - 16:57
У меня в ВК  есть функция 
Run(Строка ИсполняемыйФайл, Строка ПараметрыЗапуска, Строка ТекущийКаталог, Булево ОжидатьЗавершения, Булево Элевация) - выполняет команду системы
Тебе нужен параметр Элевация=Истина.
http://devtool1c.ucoz.ru/load/prochie/iskhodnyj_kod_vneshnej_komponenty_obshhego_naznachenija/2-1-0-13
   pechkin
 
27 - 24.05.21 - 17:10
а разве можно программно элевацию выполнить, без нажатия кнопки?
   perlharbor
 
28 - 24.05.21 - 17:30
(26) Что-то не понял, как этим всем пользоваться
   Mikhail Volkov
 
29 - 24.05.21 - 19:25
(10) У меня была такая задача: по завершению работы последнего пользователя запустить bat-файл для dt-выгрузки базы. Для его запуска не нужны административные права, но если пользователь выходит из системы, то выполнение bat-файла прекращается: в нем пауза пара минут, она выполняется, а dt-выгрузка - нет. Вот не пришлось запускать bat-файл под СИСТЕМА командой SchTasks.
Насчет пользователя ОС использую:
// Возвращает пользователя ОС (если он в базе), или Неопределено
// по примеру https://forum.infostart.ru/forum9/topic10769/
Функция ПользовательОС(Пользователь = Неопределено) Экспорт
    Пользователь = ?(Пользователь = Неопределено, ПараметрыСеанса.Пользователь, Пользователь);
    Текущий = Пользователь = ПараметрыСеанса.Пользователь;
    СоединенияИнформационнойБазы = ПолучитьСоединенияИнформационнойБазы();
    Фильтр = Новый Структура;
    Фильтр.Вставить("Пользователь", СокрЛП(Пользователь.Код));
    Фильтр.Вставить("Событие", "_$Session$_.Authentication");
    Фильтр.Вставить("Сеанс", НомерСеансаИнформационнойБазы());
    ТЗ = Новый ТаблицаЗначений;
    ВыгрузитьЖурналРегистрации(ТЗ, Фильтр, "Сеанс, Данные, Дата", , ?(Текущий, 10, 500));
    ТЗ.Сортировать("Дата Убыв"); 
    Для Каждого Соединение Из СоединенияИнформационнойБазы Цикл
        НайденнаяСтрока = ТЗ.Найти(Соединение.НомерСеанса, "Сеанс");
        Если НайденнаяСтрока <> Неопределено Тогда
            ДанныеСобытия = НайденнаяСтрока.Данные;
            Если Текущий И ДанныеСобытия.Свойство("ТекущийПользовательОС") Тогда
            Возврат ДанныеСобытия.ТекущийПользовательОС;
        ИначеЕсли ДанныеСобытия.Свойство("ПользовательОС") Тогда
            Возврат ДанныеСобытия.ПользовательОС;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    Возврат Неопределено;
КонецФункции    // ПользовательОС()
   perlharbor
 
30 - 25.05.21 - 17:19
(29) У меня в базе отключен журнал. Да и работа с ним спорное решение. Быстродействие страдает.
В общем, я так понял нет решения моей задачи. В консоли кластера из интересного есть только инфа о машине, на которой запущен rphost и ид сеанса.В таблицах скл тоже очень сомневаюсь, что есть записи о пользователях винды. Тут,получается,либо журнал регистрации, либо тж... Ну или явно писать в реквизит имя пользователя в приначалеработысистемы
 
 
   pechkin
 
31 - 25.05.21 - 17:28
Через wmi можно же получить имя пользователя
   perlharbor
 
32 - 25.05.21 - 17:41
(31) Получить пользователя ос можно миллионом способов. Как связать юзера в бд с юзером системы не нашел ни одного
   perlharbor
 
33 - 25.05.21 - 17:42
Ну, кроме тех, что выше написал
   pechkin
 
34 - 25.05.21 - 17:42
Если авторизация ос не используется то никак
   Kassern
 
35 - 25.05.21 - 17:49
(34) можно наверное через регистр соответствие пользователя ОС к пользователю БД хранить. Нет типовой связи, сделайте свою с блекджеком и запусками приложений)


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.