但是有一个例外,这也是我在这里寻求帮助的原因。
在一台装有.Net 4 Framework的Dell Latitude笔记本电脑上,该控制台应用程序在启动Sub Main之前会立即崩溃。它只会给出通用的Windows错误“程序停止工作”,没有查看调试信息的选项。
我尝试过以下几个方法: - 卸载所有非标准软件 - 注释掉几个我认为可能会引起问题的声明 - 重新编译为Auto CPU、x86和x64,以查看是否有区别 - 禁用病毒扫描程序 - 用户是管理员,但我尝试以管理员身份运行 - 在Sub Main中添加了一个消息框,以确定它在哪里崩溃 - 对所有相关代码添加try catch
我从事件查看器中获取了更多信息:
故障模块名称:KERNELBASE.dll,版本:6.1.7600.16385,时间戳:0x4a5bdbdf 异常代码:0xe0434f4d 故障偏移量:0x0000b727
下面的几个条目对我来说似乎很奇怪:
故障进程ID:0x%9 故障应用程序启动时间:0x%10 故障应用程序路径:%11 故障模块路径:%12
我还能打开.wer文件(Windows错误报告平面文件),它重复了大部分相同的信息,但也包括一些正在使用的加载的dll和其他文件。
感谢您花时间阅读我的问题,并希望有人能提出一些解决方法。
Joshua
编辑: 我认为以下Win32 API调用可能会导致问题,它们是唯一我不能轻松注释掉而不需要大量代码重写的内容。 如果是这些API调用导致的问题,为什么只有这台机器会出现呢?
' Obtain a handle to the console application window by passing the title of your application.
Dim hWnd As Integer = Process.GetCurrentProcess().MainWindowHandle
Dim hMenu As Integer = GetSystemMenu(hWnd, False)
'WIN API Functions to assist in disabling the Close button on the Console Window
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Integer, ByVal uPosition As Integer, ByVal uFlags As Integer) As Boolean
Private Declare Function GetForegroundWindow Lib "user32" () As Integer
Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Integer, ByVal bRevert As Boolean) As Integer
Private Declare Function GetWindow Lib "user32" (ByVal hWnd As Integer, ByVal uCmd As Integer) As Integer
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Integer, ByVal lpString As String, ByVal nMaxCount As Integer) As Integer
Private Declare Function ShowWindow Lib "user32.dll" (ByVal hWnd As Integer, ByVal nCmdShow As Int32) As Boolean
Public Declare Function WNetGetConnection Lib "mpr.dll" Alias "WNetGetConnectionA" (ByVal lpszLocalName As String, ByVal lpszRemoteName As String, ByRef cbRemoteName As Integer) As Integer