C#应用程序在vista / 7上冻结,而不是在xp / 2003服务器上

时间:2010-07-03 15:05:29

标签: c# freeze

我编写了一个在我的xp开发机器上运行良好的C#应用​​程序。 当我的客户端在不同的PC上运行它时,似乎冻结了vista和7台机器。 我想知道在vista / 7上运行dotnet应用程序是否有任何问题。 我编译了框架2.0和3.5的应用程序,但它没有帮助。 日志文件既没有帮助。 有没有办法知道应用程序冻结在哪里(当然,客户端没有VS附加到应用程序)? 提前感谢您的帮助。

皮尔。

4 个答案:

答案 0 :(得分:2)

通常,.NET应用程序应该在安装了.NET框架的任何Windows版本上运行相同的程序。最常见的问题与Vista和7中的新用户帐户控制策略有关,这会阻止应用程序访问需要提升权限的区域(否则在XP中的管理员帐户下运行正常)。

例如,如果您的应用程序正在尝试将配置设置写入Program Files文件夹(这是一个非常糟糕的主意,顺便说一句),或者正在使用某些硬编码磁盘或注册表路径而不是提供的环境变量。 NET类,它可能会在Vista下失败。

要快速检查这是否是UAC权限问题,请尝试以管理员身份运行该应用程序(让您的客户端右键单击.exe文件并选择以管理员身份运行)。如果它有效,那么这表明你需要检查你的代码并更新它以确保你只访问允许的区域。

查看此链接以获取更多信息:Making apps UAC aware

正如redsquare建议的那样,在各种Windows系统中测试应用程序的最佳方法是在多个虚拟机(MS Virtual PCVMWare Player中运行它们,这两个虚拟机都是免费的下载)。

答案 1 :(得分:0)

您没有提供太多信息,以便我们提供大量帮助。

我首先尝试在虚拟机上本地重新创建问题(vista one available here),然后使用类似memprofiler的内容来分析应用程序。

答案 2 :(得分:0)

要求您的客户使用Windows任务管理器捕获进程转储

  1. 在任务管理器中,找到挂起的进程。
  2. 右键单击并捕获内存转储。
  3. 然后你可以对转储做一些分析,看看它挂起的原因。

    如果您不熟悉转储分析,请通过http://support.microsoft.com找到可以提供帮助或打开支持案例的人

答案 3 :(得分:0)

csharp应用程序应该在vista / win7上运行。这是他们的家:))

你的问题不是操作系统。它的你的申请。 很可能应用程序正在寻找一个文件,一个文件夹,客户端上没有的东西,它的冻结。这是我的经历。

检查项目独立性,并确保已将项目所需的所有内容发送给客户。

最后,向一个客户端分发启用调试消息的调试版本,并从他们的系统获得反馈。