如何在Windows中以兼容模式启动应用程序会影响应用程序,我该如何检测它?

如何在Windows中以兼容模式启动应用程序会影响应用程序,我该如何检测它?,第1张

概述如何在Windows中以兼容模式启动应用程序会影响应用程序,我该如何检测它?

在兼容模式下运行时,windows对应用程序做了什么?

有没有一种方法可以检测.NET中的兼容模式设置?

用于公用Datatable的C#SQL查询

.Net的窗口菜单

命令和复合应用程序块中的事件之间的区别

.NET与windows RT蓝牙LE API – 重新启动windows后无法读取或写入设备

processstartinfo.UseShellExecute有什么大不了的?

在兼容模式下运行时,windows对应用程序做了什么?

它插入一些模仿旧行为或错误的兼容性垫片。 有时这是必要的,一些程序的行为取决于已经修复的旧错误; 或者他们使用未公开的功能。

Joel的博客文章“微软如何失去API战争”给出了一个很好的例子:

我首先从热门游戏“模拟城市”的开发者那里听说过这个消息,他告诉我,他的应用程序中存在一个严重的错误:在释放它之后使用了内存,这是一个在DOS上正常工作的主要禁忌,在windows下无法工作,释放的内存可能会被另一个正在运行的应用程序马上抢走。 windows团队的测试人员正在通过各种流行的应用程序,测试他们以确保他们的工作正常,但模拟城市不断崩溃。 他们向windows开发人员汇报了这一情况,他们反汇编了SimCity,在调试器中检查了这个BUG,发现了这个BUG,并添加了一些特殊的代码来检查SimCity是否在运行,如果是,运行内存分配器,释放它后仍然可以使用内存。

这就是兼容垫片所要做的。 插入传统行为。 无论是报告不同版本的windows, 以不同的方式使某个API行为; 或者禁用可能会导致Aero问题的windows的其他功能。

垫片的技术细节在这里 。

Shim基础设施实现了一种应用程序编程接口(API)挂钩形式。 具体来说,它利用链接的性质将来自windows本身的API调用重定向到替代代码 – 垫片本身。 windows可执行文件(PE)和通用目标文件格式(COFF)规范包含多个头文件,头文件中的数据目录在应用程序和链接文件之间提供了一个间接层。 通过导入地址表(IAT)调用外部二进制文件。

有没有一种方法可以检测.NET中的兼容模式设置?

问题是以兼容模式运行的程序似乎给出了相关的答案。

总结

以上是内存溢出为你收集整理的如何在Windows中以兼容模式启动应用程序会影响应用程序,我该如何检测它?全部内容,希望文章能够帮你解决如何在Windows中以兼容模式启动应用程序会影响应用程序,我该如何检测它?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1292948.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存