Witam,
piszę program - klienta bazy danych.
Chciałbym, aby była tam możliwość wykonania kopi bazy.
wymyśliłem, że za pomocą
System.Diagnostics.Process();
będę uruchamiał proces pg_dump i nim będę wykonywał kopie. Gdzie jest problem? Program promptuje (prosi ;) ) o hasło które użytkownik musi wpisać ręcznie.
Jak na razie obszedłem problem wysyłając za pomocą metody SendKeys hasło i potem enter ;P
Jest to jednak tymczasowe rozwiązanie i może ktoś mógłby mi coś podpowiedzieć na temat jak to zrobić lepiej.
Od razu uprzedzam pytanie, nie można w parametrach do pg_dump przesłac hasła dla użytkownika.
pozdrawiam ryo
private void lWykonaj_Click(object sender, EventArgs e)
{
try
{
System.Diagnostics.Process nowy = new System.Diagnostics.Process();
nowy.StartInfo.FileName = "\"C:\\Program Files\\PostgreSQL\\8.2\\bin\\pg_dump.exe \"";
nowy.StartInfo.Arguments = " -f c:\\kopia.sql -d BAZA -U \"LOGIN\"";
\\nowy.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
nowy.StartInfo.RedirectStandardOutput = true;
nowy.StartInfo.UseShellExecute = false;
\\nowy.StartInfo.CreateNoWindow = true;
nowy.Start();
if (nowy.Responding)
{
SendKeys.Send("HASLO{ENTER}");
}
else
nowy.Kill();
nowy.WaitForExit();
this.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}