Ошибка доступа к файлу 'C:Program Files1cv8conflogcfg.xml' #778629


#0 by TormozIT
В 64-битной ОС Windows 10 с выключенным контролем учетных записей (UAC) из 32-битного клиентского приложения, запущенного интерактивно без элевации (не через команду "Запуск от имени администратора"), выполняю попытку записать файл "C:Program Files1cv8conflogcfg.xml" и получаю исключение Ошибка доступа к файлу 'C:Program Files1cv8conflogcfg.xml' Моя учетная запись естественно входи в группу Администраторы. Как грамотно (с учетом идеологии контроля учетных записей) записать такой файл? Если даю доступ учетным записям "Все приложения" или "Все ограниченные приложения", то ошибка остается. Если даю доступ всем (учетная запись "Все") на этот файл, то ошибка уходит. Можно ли как то временно запросить у пользователя элевацию на конкретную файловую операцию? Как из кода 1С запустить приложение с элевацией?
#1 by Jija Grenkov
Первое, что приходит в голову выполнить bat/shell скрипт. А пользователь пароль админа знает или нет?
#2 by Cyberhawk
"с выключенным контролем учетных записей (UAC)" // Его нельзя выключить. Наверное, имеется в виду самое "нижнее" положение ползунка в настройке уровней УАС?
#3 by Jump
>>Как грамотно (с учетом идеологии контроля учетных записей) записать такой файл? не отключать UAC не писать в системные директории.
#4 by Jija Grenkov
так а если файл настроек системного журнала должен лежать именно в этом каталоге? По вашей теории нельзя автоматизировать этот процесс.
#5 by Jump
Файл настроек системного журнала? А какое отношение 1с может иметь к системному журналу?
#6 by Jija Grenkov
технологического журнала имелось в виду
#7 by Jump
Технологический журнал, это журнал приложения. А приложение не должно хранить свои журналы, логи и прочие временные файлы в системных директориях. Т.е журналов там не должно быть. В речь идет про файл logcfg.xml - это файл настройки приложения. Он записывается при установке программы. И соответственно должен изменяться, перезаписываться, или удалятья только при установке или удалении данной программы.
#8 by Jump
Т.е есть базовый принцип - приложение не должно писать в Program Files, и уж тем более не должно там ничего хранить.
#9 by Jija Grenkov
Я не разделяю ваше мнение, что файл настроек технологического журнала должен записыватсья при установке/удалении 1с. Это не временный файл, это не лог - это конфигурационный файл приложения (1с) для настройки логирования. Где ему еще лежать? Как минимум я знаю 2 случая, когда этот файл меняетя из 1с. В ЦУП и обработке настройки тех журнала.
#10 by Jump
Поясню - Если файл изменяется при работе программы, то его нельзя размещать в Program Files. Там можно размещать только файлы изменяемые при установке программы!
#11 by Jija Grenkov
я даже затрудняюсь представить где должны лежать конфиги приложения (конфиги для того и есть, что бы их менять по потребности). 1. Конфиг это скорее постоянный файл чем временный. Часто без конфига приложение просто не будет запускатсья, а удаление временных файлов не должно влиять на работоспособность приложения. 2. Разработчики 1с решили, что конфиги должны лежать в папке c установленной платформой. 3. Довольно много программ хранят конфиги в <home directory>/conf , я сейчас много работаю с apache hadoop стеком и там все конфиги лежат именно в этом каталоге.
#12 by Jump
Все конфиги должны лежать в HomeDir. Это основа. В линуксе немного по другому, но принцип тот же.
#13 by Jija Grenkov
Так, а что для платформы является home dir? Разве не папка куда установленая программа?
#14 by Jija Grenkov
И самый ключевой момент в том, что разработчки платформы ожидают файл именно в том месте и пользователю остаеться только подстраиваться под ситуацию.
#15 by TormozIT
Пользователь знает пароль, но не хочет его вводить. Да.
#16 by Jija Grenkov
#17 by Jump
HomeDir - домашняя директория пользователя, от имени которого запущена программа.
#18 by Jump
Да пофиг что там ожидают разработчики. Вопрос был в том, как идеологически правильно обеспечить доступ к файлу, я объяснил. А как там думают разработчики - дело третье.
#19 by Лефмихалыч
прав не хватает пользователю, под которым сервер запущен, поди
#20 by TormozIT
Где написано про сервер?
#21 by Jija Grenkov
До меня вам точно не удалось донести суть. В папке пользователя лежат настройки относящиеся к конерктному пользователю, в папке с утановленной программой конфиги относящиеся к программе в целом.
#22 by Jump
Что нехватает прав это понятно. Не хватает прав пользователю, под которым записана программа. Почему не хватает - потому что пользователям нельзя писать в эту директорию.
#23 by Лефмихалыч
считай, что у меня телепатический припадок.
#24 by Jump
По идеологии Windows в Programm Files хранится сама программа и необходнимые для нее библиотеки и данные. Они записываются в момент инсталляции, и используются только на чтение. В нее запрещено писать пользовательским программам.
#25 by Jump
Т,е хранить в Programm Files можно что угодно, а менять нельзя.
#26 by TormozIT
Спасибо. Хоть что то по существу вопроса =) Видимо придется использовать старый добрый hstart, который теперь поддерживает элевацию.
#27 by Jija Grenkov
можно ссылку с описанием данной идеалогии? подойдет и на английском.
#28 by Лефмихалыч
можно тупо прав накинуть на этот самый сам по себе logcfg.xml еще можно "mklink -j" и заныкать куда-то этот logcfg.xml, куда права есть. или в 1cv88..*inconfconf.cfg прописать ConfLocation, опять же туда, где есть права
#29 by TormozIT
Еще бы найти полностью бесплатную утилиту для выполнения команд системы с элевацией.
#30 by Jump
Того что запись в эту папку запрещена вам недостаточно?
#31 by Лефмихалыч
wmic process create google that
#32 by Jija Grenkov
Конечно нет. Это лишь подтвержает, что конфигурацие должен заниматься человек с правами админа. Не вижу никих проблем записать файл из скрипта.
#33 by TormozIT
Где тут про элевацию?
#34 by Jija Grenkov
чем не устроил вариант из ?
#35 by Jump
Вот именно - вносить изменения туда может только админ, и система. Но никак не пользователь. А программа запускается от пользователя.
#36 by TormozIT
Научи запускать из 1С скрипт PowerShell и ловить выходной поток (сообщения).
#37 by Jija Grenkov
я подразумевал, что весь код записи файла будет в скрипте. То есть вы его динамически сформировали, положили во временный каталоги и оттуда скриптом копировали в конечную директорию
#38 by Jija Grenkov
в коментах так же приводили пример через bat
#39 by TormozIT
Опять через runas. Он всегда просит вводить пароль.
#40 by TormozIT
Решение найдено. 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.
#41 by TormozIT
Утилита действительно работает и не запрашивает пароль, но показывает окно командного интерпретатора. Поэтому все таки пришлось вернуться к старому доброму hstart.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С