Конфигурационное местоположение файла для любого пользователя, конкретной конфигурации рабочей станции

Где находится правильное местоположение для хранения конфигурационного файла конкретной машины. Файл изменяется время от времени, и он должен быть доступен любому пользователю (так что один конфиг на машину). Я не хочу изменять app.config, поскольку он перезаписывается в новой версии и по причинам разрешений. Файл будет создан при первом запуске и останется там для любой новой версии. С уважением

1
nl ja de
Я подключил аппаратное обеспечение (последовательный порт), но настройки порта различны на каждом компьютере. Поэтому, как только установка будет создана, больше не нужно вносить какие-либо изменения. Теперь мне интересно, куда я должен поместить файл.
добавлено автор Rolfi, источник
Что вы имеете в виду для файла конфигурации машины. Для каждого приложения NET есть один файл конфигурации машины, и вы не должны изменять его по своему желанию. Вы говорите о файле конфигурации, специфичном для вашего приложения?
добавлено автор Steve, источник

1 ответы

В .NET Framework уже используется файл конфигурации машины, который содержит параметры, которые используются всеми .NET-приложениями, запущенными на этом компьютере, но это не похоже на то, что вы ищете.

Если вам не нужно, чтобы приложение могло вносить изменения в файл конфигурации, я бы сказал, что самый простой способ - сохранить настройки в файле xml в исполняемой папке. Вы можете легко загрузить настройки в приложении из своего текущего каталога. Вы могли бы назвать файл тем, что хотите.

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

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

Public Class LocalStorage
    Implements ILocalStorage

    Private Const _CompanyUrl As String = "http://www.mycompany.com"

    Public Function Read(Of T)(ByVal fileName As String) As T
        Dim contents As T = Nothing
        Dim serializer As XmlSerializer = New XmlSerializer(GetType(T))
        Try
            Using stream As Stream = New IsolatedStorageFileStream(fileName, FileMode.Open, FileAccess.Read, GetStorage())
                Using xmlReader As XmlReader = New XmlTextReader(stream)
                    contents = CType(serializer.Deserialize(xmlReader), T)
                End Using
            End Using
        Catch ex As FileNotFoundException
        Catch ex As Exception
            Throw New IOException("Failed to read from " + fileName + " in local isolated storage", ex)
        End Try
        Return contents
    End Function

    Public Sub Write(Of T)(ByVal fileName As String, ByVal serializableDataObject As T)
        Dim serializer As XmlSerializer = New XmlSerializer(GetType(T))
        Try
            Using stream As Stream = New IsolatedStorageFileStream(fileName, FileMode.Create, FileAccess.Write, GetStorage())
                Using xmlTextWriter As XmlTextWriter = New XmlTextWriter(stream, New UTF8Encoding(False))
                    xmlTextWriter.Formatting = Formatting.Indented
                    Dim namespaces As XmlSerializerNamespaces = New XmlSerializerNamespaces()
                    namespaces.Add("", "")
                    serializer.Serialize(xmlTextWriter, serializableDataObject, namespaces)
                End Using
            End Using
        Catch ex As Exception
            Throw New IOException("Failed to write to " & fileName & " in local isolated storage", ex)
        End Try
    End Sub

    Private Function GetStorage() As IsolatedStorageFile
        Return IsolatedStorageFile.GetStore(IsolatedStorageScope.Machine Or IsolatedStorageScope.Assembly, Nothing, New Url(_CompanyUrl))
    End Function
End Class
1
добавлено
Очень интересный код кода. Это может понадобиться в другом проекте. Но изолированное хранилище по-прежнему привязано к текущему пользователю, поэтому не совсем то, что я ищу.
добавлено автор Rolfi, источник
Не в этом дело. Изолированное хранилище в моем примере используется всеми пользователями и приложениями на одном компьютере.
добавлено автор Steven Doggart, источник
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)