|   |   | 
| 
 | Ошибка доступа к файлу 'C:\Program Files\1cv8\conf\logcfg.xml' | ☑ | ||
|---|---|---|---|---|
| 0
    
        TormozIT гуру 14.08.16✎ 17:07 | 
        В 64-битной ОС Windows 10 с выключенным контролем учетных записей (UAC) из 32-битного клиентского приложения, запущенного интерактивно без элевации (не через команду "Запуск от имени администратора"), выполняю попытку записать файл "C:\Program Files\1cv8\conf\logcfg.xml" и получаю исключение 
 Ошибка доступа к файлу 'C:\Program Files\1cv8\conf\logcfg.xml' Моя учетная запись естественно входи в группу Администраторы. Как грамотно (с учетом идеологии контроля учетных записей) записать такой файл? Если даю доступ учетным записям "Все приложения" или "Все ограниченные приложения", то ошибка остается. Если даю доступ всем (учетная запись "Все") на этот файл, то ошибка уходит. Можно ли как то временно запросить у пользователя элевацию на конкретную файловую операцию? Как из кода 1С запустить приложение с элевацией? | |||
| 1
    
        Jija Grenkov 14.08.16✎ 20:33 | 
        Первое, что приходит в голову выполнить bat/shell скрипт. А пользователь пароль админа знает или нет?     | |||
| 2
    
        Cyberhawk 14.08.16✎ 20:37 | 
        "с выключенным контролем учетных записей (UAC)" // Его нельзя выключить. Наверное, имеется в виду самое "нижнее" положение ползунка в настройке уровней УАС?     | |||
| 3
    
        Jump 14.08.16✎ 20:53 | 
        (0) >>Как грамотно (с учетом идеологии контроля учетных записей) записать такой файл? 
 Грамотно - не отключать UAC не писать в системные директории. | |||
| 4
    
        Jija Grenkov 14.08.16✎ 21:02 | 
        (3) так а если файл настроек системного журнала должен лежать именно в этом каталоге? По вашей теории нельзя автоматизировать этот процесс.     | |||
| 5
    
        Jump 14.08.16✎ 21:04 | 
        (4) Файл настроек системного журнала? А какое отношение 1с может иметь к системному журналу?     | |||
| 6
    
        Jija Grenkov 14.08.16✎ 21:13 | 
        (5) технологического журнала имелось в виду     | |||
| 7
    
        Jump 14.08.16✎ 21:18 | 
        (6) Технологический журнал, это журнал приложения.
 А приложение не должно хранить свои журналы, логи и прочие временные файлы в системных директориях. Т.е журналов там не должно быть. В (0) речь идет про файл logcfg.xml - это файл настройки приложения. Он записывается при установке программы. И соответственно должен изменяться, перезаписываться, или удалятья только при установке или удалении данной программы. | |||
| 8
    
        Jump 14.08.16✎ 21:18 | 
        Т.е есть базовый принцип - приложение не должно писать в Program Files, и уж тем более не должно там ничего хранить.     | |||
| 9
    
        Jija Grenkov 14.08.16✎ 21:26 | 
        (7) Я не разделяю ваше мнение, что файл настроек технологического журнала должен записыватсья при установке/удалении 1с. Это не временный файл, это не лог - это конфигурационный файл приложения (1с) для настройки логирования. Где ему еще лежать? Как минимум я знаю 2 случая, когда этот файл меняетя из 1с. В ЦУП и обработке настройки тех журнала.     | |||
| 10
    
        Jump 14.08.16✎ 21:30 | 
        (9) Поясню -
 Если файл изменяется при работе программы, то его нельзя размещать в Program Files. Там можно размещать только файлы изменяемые при установке программы! | |||
| 11
    
        Jija Grenkov 14.08.16✎ 21:53 | 
        (10) я даже затрудняюсь представить где должны лежать конфиги приложения (конфиги для того и есть, что бы их менять по потребности). 
 1. Конфиг это скорее постоянный файл чем временный. Часто без конфига приложение просто не будет запускатсья, а удаление временных файлов не должно влиять на работоспособность приложения. 2. Разработчики 1с решили, что конфиги должны лежать в папке c установленной платформой. 3. Довольно много программ хранят конфиги в <home directory>/conf , я сейчас много работаю с apache hadoop стеком и там все конфиги лежат именно в этом каталоге. | |||
| 12
    
        Jump 14.08.16✎ 21:57 | 
        (11) Все конфиги должны лежать в HomeDir.
 Это основа. В линуксе немного по другому, но принцип тот же. | |||
| 13
    
        Jija Grenkov 14.08.16✎ 21:59 | 
        (12) Так, а что для платформы является home dir? Разве не папка куда установленая программа?     | |||
| 14
    
        Jija Grenkov 14.08.16✎ 22:02 | 
        И самый ключевой момент в том, что разработчки платформы ожидают файл именно в том месте и пользователю остаеться только подстраиваться под ситуацию.     | |||
| 15
    
        TormozIT гуру 14.08.16✎ 22:16 | 
        (1) Пользователь знает пароль, но не хочет его вводить.
 (2) Да. | |||
| 16
    
        Jija Grenkov 14.08.16✎ 22:21 | ||||
| 17
    
        Jump 14.08.16✎ 22:24 | 
        (13) HomeDir - домашняя директория пользователя, от имени которого запущена программа.     | |||
| 18
    
        Jump 14.08.16✎ 22:26 | 
        (14) Да пофиг что там ожидают разработчики.
 Вопрос был в том, как идеологически правильно обеспечить доступ к файлу, я объяснил. А как там думают разработчики - дело третье. | |||
| 19
    
        Лефмихалыч 14.08.16✎ 22:26 | 
        (0) прав не хватает пользователю, под которым сервер запущен, поди     | |||
| 20
    
        TormozIT гуру 14.08.16✎ 22:28 | 
        (19) Где написано про сервер?     | |||
| 21
    
        Jija Grenkov 14.08.16✎ 22:31 | 
        (18) До меня вам точно не удалось донести суть. В папке пользователя лежат настройки относящиеся к конерктному пользователю, в папке с утановленной программой конфиги относящиеся к программе в целом.     | |||
| 22
    
        Jump 14.08.16✎ 22:31 | 
        (19) Что нехватает прав это понятно.
 Не хватает прав пользователю, под которым записана программа. Почему не хватает - потому что пользователям нельзя писать в эту директорию. | |||
| 23
    
        Лефмихалыч 14.08.16✎ 22:32 | 
        (20) считай, что у меня телепатический припадок.     | |||
| 24
    
        Jump 14.08.16✎ 22:34 | 
        (21) По идеологии Windows в Programm Files хранится сама программа и необходнимые для нее библиотеки и данные.
 Они записываются в момент инсталляции, и используются только на чтение. В нее запрещено писать пользовательским программам. | |||
| 25
    
        Jump 14.08.16✎ 22:35 | 
        Т,е хранить в Programm Files можно что угодно, а менять нельзя.     | |||
| 26
    
        TormozIT гуру 14.08.16✎ 22:37 | 
        (16) Спасибо. Хоть что то по существу вопроса =)
 Видимо придется использовать старый добрый hstart, который теперь поддерживает элевацию. | |||
| 27
    
        Jija Grenkov 14.08.16✎ 22:37 | 
        (24) можно ссылку с описанием данной идеалогии? подойдет и на английском.     | |||
| 28
    
        Лефмихалыч 14.08.16✎ 22:38 | 
        можно тупо прав накинуть на этот самый сам по себе logcfg.xml
 еще можно "mklink -j" и заныкать куда-то этот logcfg.xml, куда права есть. или в 1cv8\8...*\bin\conf\conf.cfg прописать ConfLocation, опять же туда, где есть права | |||
| 29
    
        TormozIT гуру 14.08.16✎ 22:39 | 
        Еще бы найти полностью бесплатную утилиту для выполнения команд системы с элевацией.     | |||
| 30
    
        Jump 14.08.16✎ 22:40 | 
        (27) Того что запись в эту папку запрещена вам недостаточно?     | |||
| 31
    
        Лефмихалыч 14.08.16✎ 22:42 | 
        (29) wmic process create
 google that | |||
| 32
    
        Jija Grenkov 14.08.16✎ 22:48 | 
        (30) Конечно нет. Это лишь подтвержает, что конфигурацие должен заниматься человек с правами админа. Не вижу никих проблем записать файл из скрипта.     | |||
| 33
    
        TormozIT гуру 14.08.16✎ 22:50 | 
        (31) Где тут про элевацию?     | |||
| 34
    
        Jija Grenkov 14.08.16✎ 22:52 | 
        (33) чем не устроил вариант из (16)?     | |||
| 35
    
        Jump 14.08.16✎ 22:54 | 
        (32) Вот именно - вносить изменения туда может только админ, и система.
 Но никак не пользователь. А программа запускается от пользователя. | |||
| 36
    
        TormozIT гуру 14.08.16✎ 22:55 | 
        (34) Научи запускать из 1С скрипт PowerShell и ловить выходной поток (сообщения).     | |||
| 37
    
        Jija Grenkov 14.08.16✎ 23:01 | 
        (36) я подразумевал, что весь код записи файла будет в скрипте. То есть вы его динамически сформировали, положили во временный каталоги и оттуда скриптом копировали в конечную директорию     | |||
| 38
    
        Jija Grenkov 14.08.16✎ 23:01 | 
        http://blog.essentialkaos.com/post/1525117103/privileges-in-windows-console в коментах так же приводили пример через bat     | |||
| 39
    
        TormozIT гуру 14.08.16✎ 23:03 | 
        (38) Опять через runas. Он всегда просит вводить пароль.     | |||
| 40
    
        TormozIT гуру 14.08.16✎ 23:04 | 
        Решение найдено.
 elevate - Command-Line UAC Elevation Utility This utility executes a command with UAC privilege elevation. This is useful for working inside command prompts or with batch files. http://code.kliu.org/misc/elevate/ | |||
| 41
    
        TormozIT гуру 15.08.16✎ 00:34 | 
        (40) Утилита действительно работает и не запрашивает пароль, но показывает окно командного интерпретатора. Поэтому все таки пришлось вернуться к старому доброму hstart.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |