Tesouro Ответов: 2

Где моя программа может записывать файлы конфигурации и данных


Всем привет,

Моя программа должна где-то записывать конфигурационные файлы и некоторые файлы данных. Я знаю, что пишу файлы в свою программу .Путь EXE (который будет находиться внутри C:\Program файлы) могут вызвать проблемы, связанные с разрешениями. Итак, я делаю это:

ProgramDataPath = Система.Окна.Формы.Приложение.CommonAppDataPath

ProgramDataPath-это глобальная строка в моей программе, и всякий раз, когда функция хочет читать/записывать файлы конфигурации и данных, она будет использовать ее в качестве базового пути.

Итак, мой первый вопрос: правильно ли это? Это правильное место для моей программы, чтобы написать эти файлы? Я не хочу, чтобы они были специфичными для пользователя. Я бы хотел, чтобы они были для всех пользователей.

Предполагая, что это правильное место, этот путь всегда таков:

C:\ProgramData\MyCompany\MyProgram\Version\

И поэтому файлы всегда будут записываться под номером версии программы. Но что, если я хочу использовать эти файлы для всех версий моей программы? Могу ли я просто отредактировать строку и удалить из нее "версию\", а также написать все непосредственно под ней C:\ProgramData\MyCompany\MyProgram\? Есть ли с этим какие-то проблемы?

Заранее спасибо!

Что я уже пробовал:

Я пробовал писать файлы в систему.Окна.Формы.Приложение.CommonAppDataPath и он отлично работает. Однако они пишутся под номером версии программы.

PIEBALDconsult

По-моему, все в порядке.

2 Ответов

Рейтинг:
9

Peter Vegter

Чтобы решить вашу проблему вы можете использовать это:
создайте свою "собственную" папку данных в 'C:\ProgramData папка с именем по вашему выбору:

Dim MyDataFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\FolderName\"

создать в вашей папке приложения, данные :
Directory.CreateDirectory(MyDataFolder)

и сохраните ваши данные с помощью чего-то вроде:
File.WriteAllText(MyDataFolder + "Mydata.inf", MyData)


Tesouro

Это вполне возможно. Однако по какой-то причине моя программа всегда автоматически создает папку с названием компании \ Program Name \ Version. Может быть, это параметр сборки, который можно отключить.

Рейтинг:
18

Maciej Los

Я бы посоветовал вам прочитать это: Где я должен хранить свои данные?[^]


phil.o

Я только что увидел этот вопрос, и это был первый ответ, который пришел мне в голову.
Мой 5.

Maciej Los

Спасибо ;)

Tesouro

Ну, я читал это раньше, когда искал решение, и то, что заставляло меня не хотеть использовать это решение, заключалось в том, что GUID-это длинное уродливое значение, и я хотел бы, чтобы пользователь мог видеть MyCompany\MyProgram на пути и чувствовать себя комфортно, внося изменения и там, если это необходимо.

Но все же, судя по полученным ответам, я бы предположил, что для меня действительно было бы нормально просто писать файлы под C:\ProgramData\MyCompany\MyProgram\ вместо этого C:\ProgramData\MyCompany\MyProgram\Version\ , верно? (Просто хочу убедиться)

Maciej Los

Если - по вашему мнению - использование GUID некрасиво, я бы предложил разделить места, где приложение хранит настройки и пользовательские данные.
Что ж, вас предупредили, так что выбор за вами.

Tesouro

Это хороший совет. Спасибо!

Maciej Los

Всегда пожалуйста. Если мой ответ был полезен, пожалуйста, отметьте его как решение (зеленая кнопка). Удачи вам!