Как Сохранить настройку для Всех пользователей в соответствии с Vista

Зависит. Трудно, если GUID настраиваются разумно, например, использование соленых безопасных хешей, и у Вас есть много битов. Это слабо, если GUID коротки и очевидны.

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

5
задан Ben Breen 10 October 2009 в 14:52
поделиться

2 ответа

Общие данные приложения

System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

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

Изменить:
Хотел добавить это как примечание, поскольку это только подразумевается; для записи в этот каталог не требуются повышенные права доступа, он предназначен именно для этой цели.

9
ответ дан 18 December 2019 в 10:46
поделиться

Как правильно ответил Квинтин, % ALLUSERSPROFILE% путь (Environment.SpecialFolder.CommonApplicationData в .NET) - это то, что вы ищете.

Однако при этом следует помнить о двух важных вещах:

  • Рекомендуется создать подпапку для вашей компании и приложения с помощью установщика вашего приложения. Например:

     Dim DataPath = Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData)
    DataPath = IO.Path.Combine (DataPath, «ACME Corp.»)
    DataPath = IO.Path.Combine (DataPath, «Приложение-виджет»)
    DataPath = IO.Path.Combine (DataPath, "1.0") '// Необязательно, но, возможно, удобно, чтобы легко перенести файлы конфигурации между основными версиями приложения
    
  • Хотя все пользователи будут иметь доступ для чтения к создаваемой вами папке, доступ на запись по умолчанию ограничен учетной записью, создавшей папку, а также членами группы «Администраторы» и LocalSystem. Если все пользователи должны иметь возможность изменять общий файл конфигурации (созданный одним пользователем, но переписанный другим пользователем, не являющимся администратором), вам необходимо явно организовать этот доступ. Опять же, это лучше всего сделать из установщика вашего приложения, но это также можно сделать из кода, например, при первом запуске вашего приложения:

     Dim di As New IO.DirectoryInfo (DataPath)
    Dim ds = di.GetAccessControl
    ds.AddAccessRule (Новый Security.AccessControl.FileSystemAccessRule (...))
    di.SetAccessControl (ds)
    
8
ответ дан 18 December 2019 в 10:46
поделиться