Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 防止“;将错误报告发送到Microsoft”;_Java_Windows - Fatal编程技术网

Java 防止“;将错误报告发送到Microsoft”;

Java 防止“;将错误报告发送到Microsoft”;,java,windows,Java,Windows,我正在开发一个java应用程序,它在文件上执行一些运行时子进程,对于一些文件,我得到的错误会导致“向Microsoft发送错误报告”窗口出现,我需要以编程方式处理此错误,而不向用户显示此窗口。有人能帮忙吗?您可以始终使用try-catch-finally语句: try { some code here (the code that is causing the error); } catch (Exception x) { handle exception here; } 它对

我正在开发一个java应用程序,它在文件上执行一些运行时子进程,对于一些文件,我得到的错误会导致“向Microsoft发送错误报告”窗口出现,我需要以编程方式处理此错误,而不向用户显示此窗口。有人能帮忙吗?

您可以始终使用try-catch-finally语句:

try
{
    some code here (the code that is causing the error);
}
catch (Exception x)
{
    handle exception here;
}
它对我有用

编辑以下链接可以为您提供更多帮助:


您始终可以使用try-catch-finally语句:

try
{
    some code here (the code that is causing the error);
}
catch (Exception x)
{
    handle exception here;
}
它对我有用

编辑以下链接可以为您提供更多帮助:


要禁止windows错误报告,正在调用的.exe不应以未处理的异常终止。这仅在您有权访问应用程序源的情况下有效

基于-您应该使用Win32 API调用将要忽略的特定.exe文件添加到每用户忽略列表中-您可以创建一个简单的存根应用程序,允许您按名称将应用程序添加到忽略列表中。然后,当您调用应用程序时,它不会触发错误

类似地,您可以创建另一个应用程序来使用删除它们

替代方法是使用JNI/JNA创建一个类来封装此功能,而不是使用
Runtime.exec

这里是一个简单的例子,它是JNI(大部分都不需要C++)的简单版本。下载jna.jar并将其作为项目的一部分

import com.sun.jna.Native;
import com.sun.jna.WString;
import com.sun.jna.win32.StdCallLibrary;

public class JNATest {

    public interface CLibrary extends StdCallLibrary {
        CLibrary INSTANCE = (CLibrary) Native.loadLibrary("wer.dll", 
            CLibrary.class);
        int WerAddExcludedApplication(WString name, boolean global);
        int WerRemoveExcludedApplication(WString name, boolean global);
    }

    public static void main(String[] args) {
        CLibrary.INSTANCE.WerAddExcludedApplication(new WString("C:\\foo.exe"), false);
        CLibrary.INSTANCE.WerRemoveExcludedApplication(new WString("C:\\foo.exe"), false);
    }
}
基本上,将新的
WString(…)
值替换为要忽略的应用程序的名称。为了在该点上报告windows错误,应忽略该错误


请记住,
wer.dll
仅在Windows Vista及更新版本上,因此,如果出现问题,则可能需要手动编辑注册表项。

要禁止Windows错误报告,正在调用的.exe不应以未经处理的异常终止。这仅在您有权访问应用程序源的情况下有效

基于-您应该使用Win32 API调用将要忽略的特定.exe文件添加到每用户忽略列表中-您可以创建一个简单的存根应用程序,允许您按名称将应用程序添加到忽略列表中。然后,当您调用应用程序时,它不会触发错误

类似地,您可以创建另一个应用程序来使用删除它们

替代方法是使用JNI/JNA创建一个类来封装此功能,而不是使用
Runtime.exec

这里是一个简单的例子,它是JNI(大部分都不需要C++)的简单版本。下载jna.jar并将其作为项目的一部分

import com.sun.jna.Native;
import com.sun.jna.WString;
import com.sun.jna.win32.StdCallLibrary;

public class JNATest {

    public interface CLibrary extends StdCallLibrary {
        CLibrary INSTANCE = (CLibrary) Native.loadLibrary("wer.dll", 
            CLibrary.class);
        int WerAddExcludedApplication(WString name, boolean global);
        int WerRemoveExcludedApplication(WString name, boolean global);
    }

    public static void main(String[] args) {
        CLibrary.INSTANCE.WerAddExcludedApplication(new WString("C:\\foo.exe"), false);
        CLibrary.INSTANCE.WerRemoveExcludedApplication(new WString("C:\\foo.exe"), false);
    }
}
基本上,将新的
WString(…)
值替换为要忽略的应用程序的名称。为了在该点上报告windows错误,应忽略该错误



请记住,
wer.dll
仅在Windows Vista及更高版本上,因此,如果这是一个问题,那么您可能需要手动编辑注册表项。

我认为这不是一种方法。。。任何java抛弃都不应该导致“发送错误报告”我已经尝试过了,我把进程的执行代码放在try-catch语句中,但是我仍然看到窗口错误,然后我建议您看看这个答案(即使它是针对C#)。。。由于C#和Java的相似性大于它们的不同:()无论如何,这里是你在C#中的问题的答案:我不认为这是一种方式。。。任何java抛弃都不应该导致“发送错误报告”我已经尝试过了,我把进程的执行代码放在try-catch语句中,但是我仍然看到窗口错误,然后我建议您看看这个答案(即使它是针对C#)。。。因为C++和java的不同之处在于它们的不同:(无论如何)这里是C语言中的问题的答案:WrADDExcDebug应用程序示例是C++,我怎么才能在java中使用它呢?我怎么可以把.exe文件添加到CMD的忽略列表中?你可以写一个简单的C++应用程序来完成这个任务,或者您可以创建一个包含该功能的JNI类;我将用一个小的C/C++示例更新答案,该示例将允许您从报告列表中添加/删除应用程序。您能在JNI类中帮助我吗?我比C/C++更能处理java?thnx获取帮助thnx再次获取帮助,但这是否意味着此代码将不会在windows XP下执行?尽管@ama认为这是她想要的,但几乎肯定不是。当你的应用程序出现故障时,仅仅从另一个方向看并不是一个好的长期策略。这样做,应用程序将悄悄地关闭,用户甚至不知道它已经关闭。WrADDExcDebug应用程序示例在C++中,我如何在java中使用它?我如何将CMED的EXE文件添加到忽略列表中?您可以编写一个C++的应用程序来完成这个任务,或者您可以创建一个包含该功能的JNI类;我将用一个小的C/C++示例更新答案,该示例将允许您从报告列表中添加/删除应用程序。您能在JNI类中帮助我吗?我比C/C++更能处理java?thnx获取帮助thnx再次获取帮助,但这是否意味着此代码将不会在windows XP下执行?尽管@ama认为这是她想要的,但几乎肯定不是。当你的应用程序出现故障时,仅仅从另一个方向看并不是一个好的长期策略。执行此操作,应用程序将以静默方式关闭,用户甚至不知道它已关闭。那么,您的代码中是什么导致运行时错误?你不想压制对话,那只是在地毯下扫垃圾。修复错误,对话框也会消失。我通过运行时进程在文件上运行.exe应用程序,我在一些文件上看到这个错误。这不是很清楚。发出错误的是您的.exe吗?如果