Запустите эмулятор хранилища Azure для пользователей без прав администратора при запуске - PullRequest
0 голосов
/ 10 октября 2018

На работе мы используем функции Azure для простых задач.

Для отладки или запуска функции необходим работающий эмулятор хранилища Azure.

Проблема заключается в том, что наши учетные записи разработчиков не имеютпривилегии администратора, поэтому мы не можем сами запустить эмулятор.Сейчас мы решаем эту проблему, прося администратора запустить его для нас, но это работает только до тех пор, пока вы не перезагрузите / не выключите компьютер.Мы пробовали много вещей для запуска эмулятора для каждого пользователя (как если бы он запускался администратором), но ничего не получалось.

Вот один из методов, которые мы попробовали.Простая программа, которая запускается при запуске и запускает эмулятор.Если вы запускаете его вручную как администратор, он выполняет свою работу, и эмулятор запускается без проблем.Но когда планируется запуск (с учетной записью администратора) при запуске или при входе в систему, он запускает его, но только для учетной записи администратора, а не для текущего пользователя.

Код для программы, которую мы запускаем при запуске:

internal class Program
{
    private static void Main(string[] args)
    {
        System.Diagnostics.Process process = new System.Diagnostics.Process();
        System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
        startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
        startInfo.FileName = @"C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe";
        startInfo.Arguments = "start";
        process.StartInfo = startInfo;
        process.Start();
    }
}

Есть ли у вас какие-либо идеи или предложения, как решить вышеуказанную проблему?

PS: я искал связанные темы, опубликованные в StackOverflow, на предмет проблем того же рода, но они не сильно помогают илиВариант использования был другим.

:)

1 Ответ

0 голосов
/ 11 октября 2018

Согласно этой ссылке : при первом запуске вашего эмулятора среда эмулятора должна будет настроить себя: она создаст базу данных в LocalDB и зарегистрирует некоторые порты HTTP.Чтобы процесс настройки завершился успешно, you need administrator privilege.

The next time you'll run the storage emulator, you will no longer need administrator privilege.

Итак, есть хитрый способ, просто для справки.

вы можете использовать администратор для запуска эмулятора, затемподождите несколько секунд (завершает инициализацию), остановите эмулятор.

Затем вы можете использовать обычную учетную запись пользователя, чтобы запустить ее, она будет запущена для вас.

Код, как показано ниже:

с учетной записью администратора:

    private static void Main(string[] args)
    {
        System.Diagnostics.Process process = new System.Diagnostics.Process();
        System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
        startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
        startInfo.FileName = @"C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe";
        startInfo.Arguments = "start";
        process.StartInfo = startInfo;
        process.Start();

        //Wait for finished initialization
        System.Threading.Thread.Sleep(TimeSpan.FromSeconds(10));

        //After initialization, close the Emulator
        Process[] processes = Process.GetProcessesByName("AzureStorageEmulator");

        foreach (var p in processes)
        {
            p.Kill();
        }

    }

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

Возможно, это не лучший выбор,Вы также можете задать вопрос по здесь .

...