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

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