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

时间:2012-03-07 07:15:23

标签: c# wpf windows

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

  

<强>文件夹
  C:\ Documents and Settings \ All Users
  C:\ Program Files
  C:\ ProgramData

     

注册表配置单元
  HKEY_CLASSES_ROOT
  HKEY_LOCAL_MACHINE

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

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