Вопрос

Что ж, если я хочу хранить данные для всей машины приложения, я просто использую

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

И если я хочу хранить данные для каждого пользователя, я использую

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

Но что, если я хочу сохранить данные для каждого экземпляра приложения?я мог бы использовать папку, в которой хранится приложение, но папки «программные файлы» не предназначены для такого типа хранения данных, если я правильно понимаю...

Редактировать:Чтобы уточнить, что я имел в виду, если устанавливаю приложение 2 раза в разные папки сети...не экземпляры работают, извините.

Это было полезно?

Решение

Я не знаю ни одного другого приложения, которое это делает.

Если я запускаю, скажем, две копии Visual Studio, я ожидаю, что настройки последнего закрытого экземпляра сохранятся.

Если вы присвоите экземпляру уникальный идентификатор (GUID), как вы сможете повторно использовать это значение при следующем запуске приложения?Или вы хотите получать новый набор значений каждый раз при запуске приложения?

Если вы хотите повторно использовать, вы можете создать пронумерованные подкаталоги (1, 2, 3, 4 и т. д.) и каждый раз при запуске приложения записывать файл блокировки в этот каталог.Затем проверьте наличие файла блокировки и увеличивайте число, пока не найдете разблокированную папку.

ОБНОВЛЯТЬ

В свете добавленного комментария - почему бы не получить путь к исполняемому файлу и не создать под ним папку?

Если у пользователя нет прав на эту папку, вам придется создать какое-то сопоставление между местоположением и GUID (скажем), который вы затем добавили к настройкам приложения и пути к настройкам пользователя.

Другие советы

Почему бы вам не сохранить данные во временном каталоге Path.GetTempPath.Вы можете использовать подпапку для своего приложения и другую подпапку (возможно, имя Guid будет полезно) для вашего экземпляра.Я бы реализовал некоторый класс менеджера, который реализует IDisposable, чтобы позволить удалять путь к экземпляру при завершении работы приложения.

Если вам нужно это сделать, создайте папку экземпляра либо в папке пользовательских данных, либо в папке машинных данных.Ваше приложение может удалить любые нежелательные данные при выходе.Хотя @ChrisF прав насчет большинства обычного поведения.

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

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

System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "\" + uniqueid);

или

System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "\" + uniqueid);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top