Имя: Пароль:
1C
1С v8
Как программно получить путь к каталогу журнала регистрации?
0 karabas11
 
28.12.14
21:34
Как можно программно получить путь к каталогу журнала регистрации сервера 8.2?
ИЛИ
Как программно получить путь к каталогу системных файлов сервера 1с, который указан в строке запуска для ragent. (например -d "C:\Program Files (x86)\1cv82\srvinfo")
ИЛИ
Как сократить журналы регистрации 100500 серверных баз БЕЗ ЗАХОДА в конфигуратор?

ЗЫ
Вариант такого плана C:\Program Files\1cv8\bin\1cv8.exe" CONFIG /F"C:\DemoTrd2" /N"Федоров (администратор)" /P"" /OutD:\my\log.txt /ReduceEventLogSize 2004-12-26 -saveAsC:\OldLog.elf  не предлагать, т.к. тут условие незахода в конфигуратор не выполняется
1 karabas11
 
28.12.14
22:36
Частично решилось кодом отсюда http://infostart.ru/public/165702/
Из службы сервера можно вытащить путь к каталогу системных файлов сервера (тот который после ключа -d)

Это конечно через одно место, но другого способа пока никто не подсказал :(

// Функция, позволяющая получить информацию о службах на локальном/удаленном компьютере.
// Параметры:
//    Computer - Имя компьютера.
// Возвращаемое значение:
//    Таблица значений.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_SystemService(Computer = ".")
    
    Win32_ServiceInfo = Новый ТаблицаЗначений;
    Win32_ServiceInfo.Колонки.Добавить("Name");
    Win32_ServiceInfo.Колонки.Добавить("Caption");
    Win32_ServiceInfo.Колонки.Добавить("Description");
    Win32_ServiceInfo.Колонки.Добавить("PathName");
    Win32_ServiceInfo.Колонки.Добавить("StartMode");
    Win32_ServiceInfo.Колонки.Добавить("StartName");
    Win32_ServiceInfo.Колонки.Добавить("State");
    Win32_ServiceInfo.Колонки.Добавить("ProcessID");
    Win32_ServiceInfo.Колонки.Добавить("SystemName");
    
    Попытка
        
        WinMGMT = ПолучитьCOMОбъект("winmgmts:\\" + Computer + "\root\cimv2");
        Win32_Service = WinMGMT.ExecQuery("SELECT * FROM Win32_Service");
        
        Для Каждого Service ИЗ Win32_Service Цикл
            ServiceInfo = Win32_ServiceInfo.Добавить();
            ServiceInfo.Name = Service.Name;
            ServiceInfo.Caption = Service.Caption;
            ServiceInfo.Description = Service.Description;
            ServiceInfo.PathName = Service.PathName;
            ServiceInfo.StartMode = Service.StartMode;
            ServiceInfo.StartName = Service.StartName;
            ServiceInfo.State = Service.State;
            ServiceInfo.ProcessID = Service.ProcessID;
            ServiceInfo.SystemName = Service.SystemName;
        КонецЦикла;
        
    Исключение
    КонецПопытки;
    
    Возврат Win32_ServiceInfo;

КонецФункции

// Функция, позволяющая получить информацию о процессах на локальном/удаленном компьютере.
// Параметры:
//    Computer - Имя компьютера.
// Возвращаемое значение:
//    Таблица значений.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_SystemProcess(Computer = ".")
    
    Win32_ProcessInfo = Новый ТаблицаЗначений;
    Win32_ProcessInfo.Колонки.Добавить("Caption");
    Win32_ProcessInfo.Колонки.Добавить("CommandLine");
    Win32_ProcessInfo.Колонки.Добавить("CreationDate");
    Win32_ProcessInfo.Колонки.Добавить("CSName");
    Win32_ProcessInfo.Колонки.Добавить("ExecutablePath");
    Win32_ProcessInfo.Колонки.Добавить("OSName");
    Win32_ProcessInfo.Колонки.Добавить("ParentProcessId");
    Win32_ProcessInfo.Колонки.Добавить("ProcessId");
    Win32_ProcessInfo.Колонки.Добавить("WindowsVersion");
    Win32_ProcessInfo.Колонки.Добавить("Owner");
    
    Попытка
        
        WinMGMT = ПолучитьCOMОбъект("winmgmts:\\" + Computer + "\root\cimv2");
        Win32_Process = WinMGMT.ExecQuery("SELECT * FROM Win32_Process");
        
        Для Каждого Proccess ИЗ Win32_Process Цикл
            ProccessInfo = Win32_ProcessInfo.Добавить();
            ProccessInfo.Caption = Proccess.Caption;
            ProccessInfo.CommandLine = Proccess.CommandLine;
            Попытка
                ProccessInfo.CreationDate = Дата(Лев(Proccess.CreationDate,14));
            Исключение
            КонецПопытки;
            ProccessInfo.CSName = Proccess.CSName;
            ProccessInfo.ExecutablePath = Proccess.ExecutablePath;
            ProccessInfo.OSName = Proccess.OSName;
            ProccessInfo.ParentProcessID = Proccess.ParentProcessID;
            ProccessInfo.ProcessID = Proccess.ProcessID;
            ProccessInfo.WindowsVersion = Proccess.WindowsVersion;
            User = "";
            Domain = "";
            Owner = Proccess.GetOwner(User, Domain);
            Если User = NULL И Domain = NULL Тогда
                ProccessInfo.Owner = "System";
            Иначе
                ProccessInfo.Owner = Domain + "\" + User;
            КонецЕсли;
        КонецЦикла;
        
    Исключение
    КонецПопытки;
    
    Возврат Win32_ProcessInfo;

КонецФункции
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.