Настройка проекта создания базы данных - PullRequest
0 голосов
/ 18 сентября 2018

Я не уверен, но я думаю, что у меня проблемы с некоторыми разрешениями ...

У меня есть этот метод:

  static void ExecuteCommand(string _Command)
    {
        System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "/c " + _Command);
        procStartInfo.RedirectStandardOutput = true;
        procStartInfo.UseShellExecute = false;
        procStartInfo.CreateNoWindow = false;
        //procStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        procStartInfo.Verb = "runas";
        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.StartInfo = procStartInfo;
        proc.Start();
        string result = proc.StandardOutput.ReadToEnd();
        proc.WaitForExit();
        MessageBox.Show(result);
    }

Сначала я выполнял этот код в настольном приложениии это работает.

  string createDB = @"sqlcmd -S " + SQLINSTANCE + @" -Q ""CREATE DATABASE " + DBNAME + @"""";
  ExecuteCommand(createDB);

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

В базе данных 'master' отказано в разрешении CREATE DATABASE..

Если я выполню эту строку в консоли cmd (с правами администратора и без прав), она будет отлично работать ...

В чем проблема?

1 Ответ

0 голосов
/ 18 сентября 2018

Попробуйте со свойствами Имя пользователя и Пароль вместо runas.

var psi = new ProcessStartInfo();

psi.Domain = "domain";
psi.UserName = "username";
psi.Password = password;
...