Запись файла с правами администратора

Работа с файлами и базами данных
Ответить
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Запись файла с правами администратора

Сообщение Kosist »

Уважаемые форумчане!
Подскажите, пожалуйста, как можно записать при помощи :labview: файл (xml) в папку на диске С (в директорию, где находится установленная программа)? Дело в том, что для записи в установочные директории требуются права администратора. Если файл уже существует, то в свойствах installer'а можно убрать его свойство "Read-only", и смело в него дописывать информацию. Но если требуется там же создать новый файл, то возникает проблема - средствами :labview: просто так файл "не пишется". Я смотрел в сторону "Set Permissions Function" c палитры "Advanced File VIs and Functions", однако, так и не понял, можно ли с ее помощью файлу присвоить права админа на запись. Файл сохраняю простой функцией Write to XML File VI .
Если кто-то в курсе, помогите, пожалуйста.
Заранее спасибо :thank: !
Мы делили апельсин - много наших полегло...
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5458
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 27 раз
Поблагодарили: 86 раз

Re: Запись файла с правами администратора

Сообщение IvanLis »

В Windows наверняка изначально можно создать/изменить права доступа к папке...
По крайней мере в Linux так.

Соответственно если дать права пользователю и из под него запустить программу, то все будет OK.
В Windows работаю только в XP, там вроде подобных заморочек нет.
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: Запись файла с правами администратора

Сообщение Kosist »

IvanLis писал(а):В Windows наверняка изначально можно создать/изменить права доступа к папке...
По крайней мере в Linux так.

Соответственно если дать права пользователю и из под него запустить программу, то все будет OK.
В Windows работаю только в XP, там вроде подобных заморочек нет.
Спасибо, но это решение не совсем подходит... Хотя - что еще остается делать? ))))
Мы делили апельсин - много наших полегло...
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Запись файла с правами администратора

Сообщение dadreamer »

Set Permission предназначен не для этого, он изменяет атрибуты файла:
07-05-2013 9-34-07.jpg
07-05-2013 9-34-07.jpg (10.23 КБ) 5042 просмотра
В вашем случае видимо придётся использовать WinAPI или искать готовый :vi: , отвечающий за изменение прав пользователя. Когда-то давно я менял права с помощью консольной утилиты, но сейчас уже не помню подробностей. Посмотрю чуть позже, как это делается, и напишу здесь.

Вот, порылся маленько в инете, права можно поменять какой-нибудь из этих утилит:
- 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" . Как мне кажется, вам следует из :labview: изменить права на вашу папку (быть может, даже рекурсивно, т.е. ещё и на все вложенные файлы/папки), потом создать внутри файл, менять его содержимое в процессе работы, после окончания работы программы поменять права обратно, ну или оставить, как есть. Сложно сказать, как это будет работать в W7, в данный момент не могу потестить. Но в былые времена эта прога легко меняла права для любых веток реестра в XP и семерке.
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1326
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 36 раз
Контактная информация:

Re: Запись файла с правами администратора

Сообщение AndreyDmitriev »

Kosist писал(а):Уважаемые форумчане!
Подскажите, пожалуйста, как можно записать при помощи :labview: файл (xml) в папку на диске С (в директорию, где находится установленная программа)?
Ну как бы не надо туда писать. Ведь есть же директория %LOCALAPPDATA% - вот туда и надо писать свои файлы.
Путь к этой директории можно получить программно через Get System Directory.vi:
user_pref.png
user_pref.png (11.1 КБ) 5026 просмотров
Если уж так необходимо писать файлы в %PROGRAMFILES%, то самое верное - при инсталляции установить соответствующие права (скажем с помощью Icacls.exe), но лучше так не делать. Вот тут почитайте: Where Should I Write Program Data Instead of Program Files?
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: Запись файла с правами администратора

Сообщение Kosist »

AndreyDmitriev писал(а):
Kosist писал(а):Уважаемые форумчане!
Подскажите, пожалуйста, как можно записать при помощи :labview: файл (xml) в папку на диске С (в директорию, где находится установленная программа)?
Ну как бы не надо туда писать. Ведь есть же директория %LOCALAPPDATA% - вот туда и надо писать свои файлы.
Путь к этой директории можно получить программно через Get System Directory.vi:
user_pref.png
Если уж так необходимо писать файлы в %PROGRAMFILES%, то самое верное - при инсталляции установить соответствующие права (скажем с помощью Icacls.exe), но лучше так не делать. Вот тут почитайте: Where Should I Write Program Data Instead of Program Files?
Дело в том, что не программа пишет файлы, это не происходит автоматически - пользователь сам выбирает место, куда он хочет сохранить файл. И, если он берет файл, который лежит в папке с установленной программой, и хочет сделать из него копию и как-то переделать, то, скорее всего, он выберет то же место, где находится и изначальный файл (тем более, что путь сохраняется, и т.д.). Конечно, можно его предупредить, что так делать нельзя, однако, я думал, что может есть какое-то :labview: 'шное решение.
Спасибо всем за помощь! :thank:
Мы делили апельсин - много наших полегло...
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1326
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 36 раз
Контактная информация:

Re: Запись файла с правами администратора

Сообщение AndreyDmitriev »

Kosist писал(а): Дело в том, что не программа пишет файлы, это не происходит автоматически - пользователь сам выбирает место, куда он хочет сохранить файл. И, если он берет файл, который лежит в папке с установленной программой, и хочет сделать из него копию и как-то переделать, то, скорее всего, он выберет то же место, где находится и изначальный файл (тем более, что путь сохраняется, и т.д.). Конечно, можно его предупредить, что так делать нельзя, однако, я думал, что может есть какое-то :labview: 'шное решение.
Да в общем-то даже если попытаться сохранить VI из LabVIEW скажем, в Windows, то под семёркой будет вот что:
lv.png
Это нормально, при сохранении предложите ему сразу подходящую директорию и пользователь со временем привыкнет не сохранять файлы куда попало. Либо как вариант сразу ставьте программу в %USERPROFILE%\AppData\Local директорию (так гугль хром делает, кстати), тогда и проблем не будет.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Сохранение данных»