Уважаемые форумчане!
Подскажите, пожалуйста, как можно записать при помощи файл (xml) в папку на диске С (в директорию, где находится установленная программа)? Дело в том, что для записи в установочные директории требуются права администратора. Если файл уже существует, то в свойствах installer'а можно убрать его свойство "Read-only", и смело в него дописывать информацию. Но если требуется там же создать новый файл, то возникает проблема - средствами просто так файл "не пишется". Я смотрел в сторону "Set Permissions Function" c палитры "Advanced File VIs and Functions", однако, так и не понял, можно ли с ее помощью файлу присвоить права админа на запись. Файл сохраняю простой функцией Write to XML File VI .
Если кто-то в курсе, помогите, пожалуйста.
Заранее спасибо !
Запись файла с правами администратора
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Запись файла с правами администратора
В Windows наверняка изначально можно создать/изменить права доступа к папке...
По крайней мере в Linux так.
Соответственно если дать права пользователю и из под него запустить программу, то все будет OK.
В Windows работаю только в XP, там вроде подобных заморочек нет.
По крайней мере в Linux так.
Соответственно если дать права пользователю и из под него запустить программу, то все будет OK.
В Windows работаю только в XP, там вроде подобных заморочек нет.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Запись файла с правами администратора
Спасибо, но это решение не совсем подходит... Хотя - что еще остается делать? ))))IvanLis писал(а):В Windows наверняка изначально можно создать/изменить права доступа к папке...
По крайней мере в Linux так.
Соответственно если дать права пользователю и из под него запустить программу, то все будет OK.
В Windows работаю только в XP, там вроде подобных заморочек нет.
Мы делили апельсин - много наших полегло...
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Запись файла с правами администратора
Set Permission предназначен не для этого, он изменяет атрибуты файла:
Вот, порылся маленько в инете, права можно поменять какой-нибудь из этих утилит:
- ACLView
- SetACL
- Windows PowerShell
- AccessEnum
- SubInACL
- Xcacls
- File Security Manager
Я занимался этим только один раз, и работал лишь с SetACL. Она бесплатна, скачать можно тут, примеры использования описаны тут. К примеру, для того, чтобы дать полный доступ группе "Администраторы" к папке mydir, надо выполнить команду SetACL.exe -on "C:\mydir" -ot file -actn ace -ace "n:administrators;p:full" . Как мне кажется, вам следует из изменить права на вашу папку (быть может, даже рекурсивно, т.е. ещё и на все вложенные файлы/папки), потом создать внутри файл, менять его содержимое в процессе работы, после окончания работы программы поменять права обратно, ну или оставить, как есть. Сложно сказать, как это будет работать в W7, в данный момент не могу потестить. Но в былые времена эта прога легко меняла права для любых веток реестра в XP и семерке.
В вашем случае видимо придётся использовать WinAPI или искать готовый , отвечающий за изменение прав пользователя. Когда-то давно я менял права с помощью консольной утилиты, но сейчас уже не помню подробностей. Посмотрю чуть позже, как это делается, и напишу здесь.Вот, порылся маленько в инете, права можно поменять какой-нибудь из этих утилит:
- ACLView
- SetACL
- Windows PowerShell
- AccessEnum
- SubInACL
- Xcacls
- File Security Manager
Я занимался этим только один раз, и работал лишь с SetACL. Она бесплатна, скачать можно тут, примеры использования описаны тут. К примеру, для того, чтобы дать полный доступ группе "Администраторы" к папке mydir, надо выполнить команду SetACL.exe -on "C:\mydir" -ot file -actn ace -ace "n:administrators;p:full" . Как мне кажется, вам следует из изменить права на вашу папку (быть может, даже рекурсивно, т.е. ещё и на все вложенные файлы/папки), потом создать внутри файл, менять его содержимое в процессе работы, после окончания работы программы поменять права обратно, ну или оставить, как есть. Сложно сказать, как это будет работать в W7, в данный момент не могу потестить. Но в былые времена эта прога легко меняла права для любых веток реестра в XP и семерке.
-
- VIP
- Сообщения: 1338
- Зарегистрирован: 03 фев 2010, 00:42
- Награды: 6
- Версия LabVIEW: 6.1 - 2024
- Откуда: Германия
- Благодарил (а): 1 раз
- Поблагодарили: 44 раза
- Контактная информация:
Re: Запись файла с правами администратора
Ну как бы не надо туда писать. Ведь есть же директория %LOCALAPPDATA% - вот туда и надо писать свои файлы.Kosist писал(а):Уважаемые форумчане!
Подскажите, пожалуйста, как можно записать при помощи файл (xml) в папку на диске С (в директорию, где находится установленная программа)?
Путь к этой директории можно получить программно через Get System Directory.vi:
Если уж так необходимо писать файлы в %PROGRAMFILES%, то самое верное - при инсталляции установить соответствующие права (скажем с помощью Icacls.exe), но лучше так не делать. Вот тут почитайте: Where Should I Write Program Data Instead of Program Files?
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Запись файла с правами администратора
Дело в том, что не программа пишет файлы, это не происходит автоматически - пользователь сам выбирает место, куда он хочет сохранить файл. И, если он берет файл, который лежит в папке с установленной программой, и хочет сделать из него копию и как-то переделать, то, скорее всего, он выберет то же место, где находится и изначальный файл (тем более, что путь сохраняется, и т.д.). Конечно, можно его предупредить, что так делать нельзя, однако, я думал, что может есть какое-то 'шное решение.AndreyDmitriev писал(а):Ну как бы не надо туда писать. Ведь есть же директория %LOCALAPPDATA% - вот туда и надо писать свои файлы.Kosist писал(а):Уважаемые форумчане!
Подскажите, пожалуйста, как можно записать при помощи файл (xml) в папку на диске С (в директорию, где находится установленная программа)?
Путь к этой директории можно получить программно через Get System Directory.vi:
Если уж так необходимо писать файлы в %PROGRAMFILES%, то самое верное - при инсталляции установить соответствующие права (скажем с помощью Icacls.exe), но лучше так не делать. Вот тут почитайте: Where Should I Write Program Data Instead of Program Files?
Спасибо всем за помощь!
Мы делили апельсин - много наших полегло...
-
- VIP
- Сообщения: 1338
- Зарегистрирован: 03 фев 2010, 00:42
- Награды: 6
- Версия LabVIEW: 6.1 - 2024
- Откуда: Германия
- Благодарил (а): 1 раз
- Поблагодарили: 44 раза
- Контактная информация:
Re: Запись файла с правами администратора
Да в общем-то даже если попытаться сохранить VI из LabVIEW скажем, в Windows, то под семёркой будет вот что: Это нормально, при сохранении предложите ему сразу подходящую директорию и пользователь со временем привыкнет не сохранять файлы куда попало. Либо как вариант сразу ставьте программу в %USERPROFILE%\AppData\Local директорию (так гугль хром делает, кстати), тогда и проблем не будет.Kosist писал(а): Дело в том, что не программа пишет файлы, это не происходит автоматически - пользователь сам выбирает место, куда он хочет сохранить файл. И, если он берет файл, который лежит в папке с установленной программой, и хочет сделать из него копию и как-то переделать, то, скорее всего, он выберет то же место, где находится и изначальный файл (тем более, что путь сохраняется, и т.д.). Конечно, можно его предупредить, что так делать нельзя, однако, я думал, что может есть какое-то 'шное решение.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 12 Ответы
- 600 Просмотры
-
Последнее сообщение Sergey Puzanov
-
- 2 Ответы
- 472 Просмотры
-
Последнее сообщение IvanLis
-
- 10 Ответы
- 2373 Просмотры
-
Последнее сообщение PAG
-
- 2 Ответы
- 676 Просмотры
-
Последнее сообщение seromax
-
- 5 Ответы
- 226 Просмотры
-
Последнее сообщение Artem.spb