应用程序在Windows XP中运行良好,但在Windows 7中运行时应用程序崩溃?

问题描述:

我开发了一个wpf应用程序在我的windows xp机器上,VS 2010的目标是.net framework 3.5 sp1并使用wpf工具包。我已经使用sqllite作为应用程序的数据库。当我在windows xp sp2或sp3上部署该应用程序时,它运行良好。但是当我在Windows 7家庭高级版x64或Windows 7 Ultimate x84上部署此应用程序时,当我点击打开弹出窗口的按钮时,应用程序崩溃。但是当我将兼容模式设置为该应用程序的windows xp sp3时。该应用程序在Windows 7中运行良好。我很困惑这个问题。请让我知道如果你发现问题和解决方案?应用程序在Windows XP中运行良好,但在Windows 7中运行时应用程序崩溃?

+3

附加一个调试器。 – 2012-03-07 07:17:37

+1

您是否使用任何本地电话? (例如DLL或p/invoke或“不安全”)。如果是这样,创建可以在x86 *上工作的东西相对容易,但是不能* x64或反之亦然。 (也就是说,我认为它不是与*版本*有关,而是*位*。兼容性不会影响* bitness *。请尝试在Windows 7 * x86 *中进行验证。) – 2012-03-07 07:19:36

最好的方法是如果您可以在Win7机器上安装开发环境并在调试器中运行该程序。

如果这不是一个选项,您可以将一个事件处理程序添加到AppDomain.UnhandledException。在事件处理程序中添加一个简单的调用messagebox,尽可能多地显示异常,包括堆栈跟踪。这应该会显示导致程序崩溃的错误。

+0

是否有一些与签名文件和未签名文件有关的事情 – 2012-03-07 12:50:38

+0

即使无法附加调试器,仍然可以调试小型转储器。 – tenfour 2012-03-08 02:04:12

最有可能的是,您正在使用Windows 7中受限制的路径。您是否在以下任一路径中写入数据或存储数据库?这些路径需要管理员访问才能写入。

文件夹
C:\ Documents和Settings \ All用户
C:\ Program Files文件
C:\ ProgramData

注册表配置单元
HKEY_CLASSES_ROOT
HKEY_LOCAL_MACHINE

意识到您的应用程序可能安装在Program Files中,因此安装在同一文件夹中的任何设置文件或数据库都将是只读的。

解决方案是将动态文件重定位到%AppData%%LocalAppData%之类的位置,或者修改所需文件或文件夹的权限以允许所有用户读/写访问。

我想我已经找到了解决方案。当我试图将应用程序安装到程序文件以外的任何其他位置时,它的工作正常。可能是问题是我已将sqllite db文件放入安装文件夹,该文件夹默认为c:\ program files,在win 7中写入权限被拒绝。所以当我试图插入任何记录到数据库中时,它显示一个错误。

+0

http://technet.microsoft.com/en-us/library/cc709691%28v=ws.10%29.aspx了解UAC,然后您将看到如何正确使用它。 – 2012-03-12 07:18:44