В Azure как задача запуска может взаимодействовать с ролью, которая ее содержит? - PullRequest
3 голосов
/ 08 апреля 2011

У меня есть задача запуска в рабочей роли Windows Azure.Эта задача запуска вносит изменения в реестр, которые требуют перезагрузки в виртуальной машине.Поэтому мне нужен способ сообщить роли, что она должна перезагрузиться.

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

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

Это звучит как очень хакерское решение.Есть ли более элегантный способ сделать это?Я думал, что самым простым способом было бы принудительно перезагрузить компьютер из задачи «Автозагрузка», но также не мог найти, как это сделать.

Ответы [ 3 ]

4 голосов
/ 08 апреля 2011

Да, это кажется разумным.Однако, если вы меняете реестр, почему бы просто не проверить реестр, чтобы увидеть, если вы уже изменили его?Просто поместите ваш установщик в скрипт (например, yourinstaller.cmd), но сначала вызовите другой скрипт, чтобы проверить его перед запуском (например, startup.cmd).«Youinstaller.cmd» всегда перезагружается.Имеет смысл?

@echo off
setlocal
set regpath=HKCU\Software\Microsoft\Windows\CurrentVersion\Foo\Bar
set regvalue=SomeKeyYouSet
set regdata=SomeValueYouSet
reg query "%regpath%" /v "%regvalue%" | find /i "%regdata%"
if errorlevel 1 (
    echo Data Not Found!
    call yourinstaller.cmd
    EXIT /B /0
)
3 голосов
/ 08 апреля 2011

Согласно этой записи в блоге , которая, кажется, делает что-то очень похожее на то, что вы пытаетесь сделать, вы не слишком далеко. Он использует аналогичный трюк временного файла, но делает все это в командном файле, а также перезапуск. Чтобы заставить перезагрузку работать, они используют команду shutdown .

0 голосов
/ 08 апреля 2011

Я не представляю, как будет работать техника временных файлов. Каждый раз, когда экземпляр перезагружается, вам необходимо установить значения реестра. Вы не можете зависеть от значений реестра, сохраняющихся после перезапуска роли, и вы не можете условно запустить задачу запуска.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...