Функция RegisterApplicationRestart (winbase.h)

Регистрирует активный экземпляр приложения для перезапуска.

Синтаксис

HRESULT RegisterApplicationRestart(
  [in, optional] PCWSTR pwzCommandline,
  [in]           DWORD  dwFlags
);

Параметры

[in, optional] pwzCommandline

Указатель на строку Юникода, указывающую аргументы командной строки для приложения при перезапуске. Максимальный размер командной строки, который можно указать, составляет RESTART_MAX_CMD_LINE символов. Не включайте имя исполняемого файла в командную строку; эта функция добавляет ее для вас.

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

[in] dwFlags

Этот параметр может иметь значение 0 или одно или несколько из следующих значений.

Значение Значение
RESTART_NO_CRASH
1
Не перезапускайте процесс, если он завершается из-за необработанного исключения.
RESTART_NO_HANG
2
Не перезапускайте процесс, если он завершается из-за того, что приложение не отвечает.
RESTART_NO_PATCH
4
Не перезапускайте процесс, если он завершается из-за установки обновления.
RESTART_NO_REBOOT
8
Не перезагружайте процесс, если компьютер перезагружается в результате обновления.

Возвращаемое значение

Эта функция возвращает S_OK при успешном выполнении или одном из следующих кодов ошибок.

Код возврата Описание
E_FAIL
Внутренняя ошибка.
E_INVALIDARG
Указанная командная строка слишком длинна.

Комментарии

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

Для обновляемого приложения Windows последней возможностью вызвать эту функцию является обработка сообщения WM_QUERYENDSESSION . Для обновляемого консольного приложения регистрация должна выполняться до того, как установщик попытается завершить работу приложения (необходимо сохранить регистрацию в актуальном состоянии; эту функцию нельзя вызвать при обработке уведомления CTRL_C_EVENT).

Если вы регистрируетесь для перезапуска и приложение сталкивается с необработанным исключением или не отвечает, пользователю предоставляется возможность перезапустить приложение; приложение не перезапускается автоматически без согласия пользователя. Однако если приложение обновляется и требует перезагрузки, оно перезапускается автоматически.

Чтобы предотвратить циклические перезапуски, система перезапустит приложение только в том случае, если оно выполнялось не менее 60 секунд.

Обратите внимание, что для перезапуска приложения, когда обновление требует перезагрузки компьютера, установщик должен вызвать функцию ExitWindowsEx с установленным флагом EWX_RESTARTAPPS или функцию InitiateShutdown с установленным флагом SHUTDOWN_RESTARTAPPS.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header winbase.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

Отменить регистрациюApplicationRestart