Как обработать катастрофический отказ в процессе, запущенном через Систему. Диагностика. Процесс?

С сайта R Shiny:

http://shiny.rstudio.com/gallery/current-time.html

options(digits.secs = 3) # Include milliseconds in time display

function(input, output, session) {

  output$currentTime <- renderText({
    # invalidateLater causes this output to automatically
    # become invalidated when input$interval milliseconds
    # have elapsed
    invalidateLater(as.integer(input$interval), session)

    format(Sys.time())
  })
}

14
задан Community 23 May 2017 в 11:53
поделиться

1 ответ

Попытайтесь установить реестр после значения реестра для оценки DWORD 2:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows\ErrorMode = 2

Это будет влиять на каждый процесс на машине.

Ссылка: , Как Избавиться от Всплывающих сообщений Системы и Приложения

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

, Если у Вас нет источника, используйте функцию SetErrorMode в родителе для подавления всплывающих окон. Ошибочный режим наследован подпроцессами. Необходимо установить UseShellExecute на ложь для этого для работы:

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;


namespace SubProcessPopupError
{

    class Program
    {
        [DllImport("kernel32.dll", SetLastError = true)]
        static extern int SetErrorMode(int wMode);

        static void Main(string[] args)
        {
            int oldMode = SetErrorMode(3);
            Process p;
            ProcessStartInfo ps = new ProcessStartInfo("crash.exe");
            ps.UseShellExecute = false;
            p = Process.Start(ps);
            SetErrorMode(oldMode);
            p.WaitForExit();
        }
    }
}

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

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Auto = 0

Однако я не думаю, что это подойдет при установке ошибочного режима на 3, как объяснено выше.

25
ответ дан 1 December 2019 в 12:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: