2015-07-30 4 views
1

Я использую C# в Visual Studio 2015. Я написал приложение формы Windows, которое создает объект и сериализует его. Объект содержит информацию, которая может использоваться для создания команд выбора MySQL. Все это хорошо работает.Установление соединения MySql в службе Windows

Теперь я пишу службу Windows, чтобы использовать эти объекты для мониторинга базы данных MySQL. Я смог установить и запустить службу Windows на моем компьютере, поэтому я знаю, что это нормально.

Я могу подключиться к MySQL с помощью службы Windows, чтобы он мог контролировать базу данных. Сейчас я использую этот код в OnStart метод:

try{ 
    string connectionString = @"server=my_server;database=my_database;userid=my_username;password=my_password;"; 
    MySqlConnection conn = new MySqlConnection(connectionString); 
    conn.Open() 
catch(Exception ex) 
{ 
    //Log error 
} 

Проблема заключается в том, что эта программа будет использоваться на нескольких базах данных, пароль в строке подключения необходимо изменить. Я могу легко сохранить строку подключения к сериализованному объекту, но я понятия не имею, каким правильным способом является безопасный пароль. Есть ли другой, лучший способ подключения к MySQL из службы Windows? Я новичок в службах Windows, поэтому я сожалею, если мне не хватает чего-то простого.

[EDIT]

Одна вещь, которую я рассматривать посылал SecureString из Windows Form Application на службы Windows (что-то я не знаю, как это сделать еще), то с помощью этого в обслуживании окон для подключения. Единственная проблема, которую я вижу в этом методе, заключается в том, что если служба когда-либо отключается, эти пароли теряются и должны быть повторно введены.

ответ

1

Вы можете зашифровать строку соединения в app.config. Посмотрите на это: https://msdn.microsoft.com/en-us/library/ms254494(v=vs.110).aspx

Но таким образом вы не можете редактировать конфиг вручную, так как это будет выглядеть следующим образом:

<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider"> 
    <EncryptedData> 
    <CipherData> 
     <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAH2... </CipherValue> 
    </CipherData> 
    </EncryptedData> 
</connectionStrings> 
+0

Спасибо, что это именно та вещь, которую я искал. – brandonstrong

Смежные вопросы