Error[8]: Undefined offset: 2, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述显然,Delphi(任何版本) does not support safe exception handlers(/ SAFESEH在Visual Studio中切换)。当在Windows 8上使用Windows Desktop应用程序认证工具包时,会导致警告。针对Windows 8桌面应用程序,每 certification requirements: Your app must be comp 显然,Delphi(任何版本) does not support safe exception handlers(/ SAFESEH在Visual Studio中切换)。当在windows 8上使用windows Desktop应用程序认证工具包时,会导致警告。针对windows 8桌面应用程序,每 certification requirements:

Your app must be compiled using the /SafeSEH flag to ensure safe exceptions handling

显然Delphi缺少这个开关,所以它不能做。我的问题是:

>我的理解是正确的,即使Kit只显示一个警告(不是失败),因为这是一个“必须”的要求,今天任何Delphi应用程序不能被认证为windows 8,因此不能包括在windows应用程序商店?
>可以在编译之后将SafeSEH表添加到PE文件(例如从映射文件或调试符号中提取所需的信息),或者我们绝对需要编译器/链接器支持,因此必须等到Embarcadero实现此功能吗?

要清除,我的应用程序是windows 32位桌面应用程序(64位兼容),而不是Metro应用程序。

解决方法 我不能回答问题1.但是,我很难想象,使用这个词必然意味着该规则是可选的。

至于问题2,你需要从编译器/链接器的支持。你不能合理地期望使用PE编辑后链接工具。考虑下面的代码:

try  Beep;except  on E: Exception do    Writeln(E.Classname,': ',E.Message);end;

编译器发出以下命令:

Project1.dpr.11: try0041C3AA 33C0             xor eax,eax0041C3AC 55               push ebp0041C3AD 68C9C34100       push [+++]41c3c9 // exception handler is at [+++]41c3c90041C3B2 64FF30           push DWord ptr fs:[eax]0041C3B5 648920           mov fs:[eax],espProject1.dpr.12: Beep;0041C3B8 6A00             push [+++]0041C3BA E8E1CEFEFF       call MessageBeep0041C3BF 33C0             xor eax,eax0041C3C1 5A               pop edx0041C3C2 59               pop ecx0041C3C3 59               pop ecx0041C3C4 648910           mov fs:[eax],edx0041C3C7 EB59             jmp [+++]41c4220041C3C9 E97291FEFF       jmp @HandleOnException0041C3CE 0100             add [eax],eax0041C3D0 0000             add [eax],al0041C3D2 E42F             in al,f0041C3D4 41               inc ecx0041C3D5 00DA             add dl,bl0041C3D7 C3               ret 0041C3D8 41               inc ecx0041C3D9 00A3D83E4200     add [ebx+[+++]423ed8],ahProject1.dpr.15: Writeln(E.Classname,E.Message);........

现在,真正的异常处理程序是HandleOnException,在System.pas中实现。但是,推送到堆栈的地址是$ 0041c3c9,这是包含try / except块的代码的本地地址。这意味着为了创建一个SafeSEH PE部分,你需要找到每一个try / except你的代码。虽然这显然是可行的,但我不认为这是易处理。

我想象,x86编译器的SEH异常处理程序将只是在System.pas中声明的_HandleXXX函数。在这种情况下,添加一个PE部分只列出这些功能作为后链接步骤将是很容易的。但是,由于每个try / except都有自己的本地异常处理程序,我现在相信只有编译器作者可以实际地希望添加SafeSEH PE部分。

就我所看到的,没有QC报告要求对x86 windows编译器的SafeSEH支持。我建议您记录QC报告和官方支持案例。

更新:完成对@haimg成功在哪里我失败,并且管理定位QC报告:QC#106781。

总结

以上是内存溢出为你收集整理的桌面Delphi应用程序是否可以通过Windows 8认证(使用Windows App认证包)?全部内容,希望文章能够帮你解决桌面Delphi应用程序是否可以通过Windows 8认证(使用Windows App认证包)?所遇到的程序开发问题。

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

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 3, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述显然,Delphi(任何版本) does not support safe exception handlers(/ SAFESEH在Visual Studio中切换)。当在Windows 8上使用Windows Desktop应用程序认证工具包时,会导致警告。针对Windows 8桌面应用程序,每 certification requirements: Your app must be comp 显然,Delphi(任何版本) does not support safe exception handlers(/ SAFESEH在Visual Studio中切换)。当在windows 8上使用windows Desktop应用程序认证工具包时,会导致警告。针对windows 8桌面应用程序,每 certification requirements:

Your app must be compiled using the /SafeSEH flag to ensure safe exceptions handling

显然Delphi缺少这个开关,所以它不能做。我的问题是:

>我的理解是正确的,即使Kit只显示一个警告(不是失败),因为这是一个“必须”的要求,今天任何Delphi应用程序不能被认证为windows 8,因此不能包括在windows应用程序商店?
>可以在编译之后将SafeSEH表添加到PE文件(例如从映射文件或调试符号中提取所需的信息),或者我们绝对需要编译器/链接器支持,因此必须等到Embarcadero实现此功能吗?

要清除,我的应用程序是windows 32位桌面应用程序(64位兼容),而不是Metro应用程序。

解决方法 我不能回答问题1.但是,我很难想象,使用这个词必然意味着该规则是可选的。

至于问题2,你需要从编译器/链接器的支持。你不能合理地期望使用PE编辑后链接工具。考虑下面的代码:

try  Beep;except  on E: Exception do    Writeln(E.Classname,': ',E.Message);end;

编译器发出以下命令:

Project1.dpr.11: try0041C3AA 33C0             xor eax,eax0041C3AC 55               push ebp0041C3AD 68C9C34100       push 41c3c9 // exception handler is at [+++]41c3c90041C3B2 64FF30           push DWord ptr fs:[eax]0041C3B5 648920           mov fs:[eax],espProject1.dpr.12: Beep;0041C3B8 6A00             push [+++]0041C3BA E8E1CEFEFF       call MessageBeep0041C3BF 33C0             xor eax,eax0041C3C1 5A               pop edx0041C3C2 59               pop ecx0041C3C3 59               pop ecx0041C3C4 648910           mov fs:[eax],edx0041C3C7 EB59             jmp [+++]41c4220041C3C9 E97291FEFF       jmp @HandleOnException0041C3CE 0100             add [eax],eax0041C3D0 0000             add [eax],al0041C3D2 E42F             in al,f0041C3D4 41               inc ecx0041C3D5 00DA             add dl,bl0041C3D7 C3               ret 0041C3D8 41               inc ecx0041C3D9 00A3D83E4200     add [ebx+[+++]423ed8],ahProject1.dpr.15: Writeln(E.Classname,E.Message);........

现在,真正的异常处理程序是HandleOnException,在System.pas中实现。但是,推送到堆栈的地址是$ 0041c3c9,这是包含try / except块的代码的本地地址。这意味着为了创建一个SafeSEH PE部分,你需要找到每一个try / except你的代码。虽然这显然是可行的,但我不认为这是易处理。

我想象,x86编译器的SEH异常处理程序将只是在System.pas中声明的_HandleXXX函数。在这种情况下,添加一个PE部分只列出这些功能作为后链接步骤将是很容易的。但是,由于每个try / except都有自己的本地异常处理程序,我现在相信只有编译器作者可以实际地希望添加SafeSEH PE部分。

就我所看到的,没有QC报告要求对x86 windows编译器的SafeSEH支持。我建议您记录QC报告和官方支持案例。

更新:完成对@haimg成功在哪里我失败,并且管理定位QC报告:QC#106781。

总结

以上是内存溢出为你收集整理的桌面Delphi应用程序是否可以通过Windows 8认证(使用Windows App认证包)?全部内容,希望文章能够帮你解决桌面Delphi应用程序是否可以通过Windows 8认证(使用Windows App认证包)?所遇到的程序开发问题。

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

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 4, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述显然,Delphi(任何版本) does not support safe exception handlers(/ SAFESEH在Visual Studio中切换)。当在Windows 8上使用Windows Desktop应用程序认证工具包时,会导致警告。针对Windows 8桌面应用程序,每 certification requirements: Your app must be comp 显然,Delphi(任何版本) does not support safe exception handlers(/ SAFESEH在Visual Studio中切换)。当在windows 8上使用windows Desktop应用程序认证工具包时,会导致警告。针对windows 8桌面应用程序,每 certification requirements:

Your app must be compiled using the /SafeSEH flag to ensure safe exceptions handling

显然Delphi缺少这个开关,所以它不能做。我的问题是:

>我的理解是正确的,即使Kit只显示一个警告(不是失败),因为这是一个“必须”的要求,今天任何Delphi应用程序不能被认证为windows 8,因此不能包括在windows应用程序商店?
>可以在编译之后将SafeSEH表添加到PE文件(例如从映射文件或调试符号中提取所需的信息),或者我们绝对需要编译器/链接器支持,因此必须等到Embarcadero实现此功能吗?

要清除,我的应用程序是windows 32位桌面应用程序(64位兼容),而不是Metro应用程序。

解决方法 我不能回答问题1.但是,我很难想象,使用这个词必然意味着该规则是可选的。

至于问题2,你需要从编译器/链接器的支持。你不能合理地期望使用PE编辑后链接工具。考虑下面的代码:

try  Beep;except  on E: Exception do    Writeln(E.Classname,': ',E.Message);end;

编译器发出以下命令:

Project1.dpr.11: try0041C3AA 33C0             xor eax,eax0041C3AC 55               push ebp0041C3AD 68C9C34100       push 41c3c9 // exception handler is at 41c3c90041C3B2 64FF30           push DWord ptr fs:[eax]0041C3B5 648920           mov fs:[eax],espProject1.dpr.12: Beep;0041C3B8 6A00             push [+++]0041C3BA E8E1CEFEFF       call MessageBeep0041C3BF 33C0             xor eax,eax0041C3C1 5A               pop edx0041C3C2 59               pop ecx0041C3C3 59               pop ecx0041C3C4 648910           mov fs:[eax],edx0041C3C7 EB59             jmp [+++]41c4220041C3C9 E97291FEFF       jmp @HandleOnException0041C3CE 0100             add [eax],eax0041C3D0 0000             add [eax],al0041C3D2 E42F             in al,f0041C3D4 41               inc ecx0041C3D5 00DA             add dl,bl0041C3D7 C3               ret 0041C3D8 41               inc ecx0041C3D9 00A3D83E4200     add [ebx+[+++]423ed8],ahProject1.dpr.15: Writeln(E.Classname,E.Message);........

现在,真正的异常处理程序是HandleOnException,在System.pas中实现。但是,推送到堆栈的地址是$ 0041c3c9,这是包含try / except块的代码的本地地址。这意味着为了创建一个SafeSEH PE部分,你需要找到每一个try / except你的代码。虽然这显然是可行的,但我不认为这是易处理。

我想象,x86编译器的SEH异常处理程序将只是在System.pas中声明的_HandleXXX函数。在这种情况下,添加一个PE部分只列出这些功能作为后链接步骤将是很容易的。但是,由于每个try / except都有自己的本地异常处理程序,我现在相信只有编译器作者可以实际地希望添加SafeSEH PE部分。

就我所看到的,没有QC报告要求对x86 windows编译器的SafeSEH支持。我建议您记录QC报告和官方支持案例。

更新:完成对@haimg成功在哪里我失败,并且管理定位QC报告:QC#106781。

总结

以上是内存溢出为你收集整理的桌面Delphi应用程序是否可以通过Windows 8认证(使用Windows App认证包)?全部内容,希望文章能够帮你解决桌面Delphi应用程序是否可以通过Windows 8认证(使用Windows App认证包)?所遇到的程序开发问题。

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

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 5, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述显然,Delphi(任何版本) does not support safe exception handlers(/ SAFESEH在Visual Studio中切换)。当在Windows 8上使用Windows Desktop应用程序认证工具包时,会导致警告。针对Windows 8桌面应用程序,每 certification requirements: Your app must be comp 显然,Delphi(任何版本) does not support safe exception handlers(/ SAFESEH在Visual Studio中切换)。当在windows 8上使用windows Desktop应用程序认证工具包时,会导致警告。针对windows 8桌面应用程序,每 certification requirements:

Your app must be compiled using the /SafeSEH flag to ensure safe exceptions handling

显然Delphi缺少这个开关,所以它不能做。我的问题是:

>我的理解是正确的,即使Kit只显示一个警告(不是失败),因为这是一个“必须”的要求,今天任何Delphi应用程序不能被认证为windows 8,因此不能包括在windows应用程序商店?
>可以在编译之后将SafeSEH表添加到PE文件(例如从映射文件或调试符号中提取所需的信息),或者我们绝对需要编译器/链接器支持,因此必须等到Embarcadero实现此功能吗?

要清除,我的应用程序是windows 32位桌面应用程序(64位兼容),而不是Metro应用程序。

解决方法 我不能回答问题1.但是,我很难想象,使用这个词必然意味着该规则是可选的。

至于问题2,你需要从编译器/链接器的支持。你不能合理地期望使用PE编辑后链接工具。考虑下面的代码:

try  Beep;except  on E: Exception do    Writeln(E.Classname,': ',E.Message);end;

编译器发出以下命令:

Project1.dpr.11: try0041C3AA 33C0             xor eax,eax0041C3AC 55               push ebp0041C3AD 68C9C34100       push 41c3c9 // exception handler is at 41c3c90041C3B2 64FF30           push DWord ptr fs:[eax]0041C3B5 648920           mov fs:[eax],espProject1.dpr.12: Beep;0041C3B8 6A00             push 0041C3BA E8E1CEFEFF       call MessageBeep0041C3BF 33C0             xor eax,eax0041C3C1 5A               pop edx0041C3C2 59               pop ecx0041C3C3 59               pop ecx0041C3C4 648910           mov fs:[eax],edx0041C3C7 EB59             jmp [+++]41c4220041C3C9 E97291FEFF       jmp @HandleOnException0041C3CE 0100             add [eax],eax0041C3D0 0000             add [eax],al0041C3D2 E42F             in al,f0041C3D4 41               inc ecx0041C3D5 00DA             add dl,bl0041C3D7 C3               ret 0041C3D8 41               inc ecx0041C3D9 00A3D83E4200     add [ebx+[+++]423ed8],ahProject1.dpr.15: Writeln(E.Classname,E.Message);........

现在,真正的异常处理程序是HandleOnException,在System.pas中实现。但是,推送到堆栈的地址是$ 0041c3c9,这是包含try / except块的代码的本地地址。这意味着为了创建一个SafeSEH PE部分,你需要找到每一个try / except你的代码。虽然这显然是可行的,但我不认为这是易处理。

我想象,x86编译器的SEH异常处理程序将只是在System.pas中声明的_HandleXXX函数。在这种情况下,添加一个PE部分只列出这些功能作为后链接步骤将是很容易的。但是,由于每个try / except都有自己的本地异常处理程序,我现在相信只有编译器作者可以实际地希望添加SafeSEH PE部分。

就我所看到的,没有QC报告要求对x86 windows编译器的SafeSEH支持。我建议您记录QC报告和官方支持案例。

更新:完成对@haimg成功在哪里我失败,并且管理定位QC报告:QC#106781。

总结

以上是内存溢出为你收集整理的桌面Delphi应用程序是否可以通过Windows 8认证(使用Windows App认证包)?全部内容,希望文章能够帮你解决桌面Delphi应用程序是否可以通过Windows 8认证(使用Windows App认证包)?所遇到的程序开发问题。

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

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 6, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述显然,Delphi(任何版本) does not support safe exception handlers(/ SAFESEH在Visual Studio中切换)。当在Windows 8上使用Windows Desktop应用程序认证工具包时,会导致警告。针对Windows 8桌面应用程序,每 certification requirements: Your app must be comp 显然,Delphi(任何版本) does not support safe exception handlers(/ SAFESEH在Visual Studio中切换)。当在windows 8上使用windows Desktop应用程序认证工具包时,会导致警告。针对windows 8桌面应用程序,每 certification requirements:

Your app must be compiled using the /SafeSEH flag to ensure safe exceptions handling

显然Delphi缺少这个开关,所以它不能做。我的问题是:

>我的理解是正确的,即使Kit只显示一个警告(不是失败),因为这是一个“必须”的要求,今天任何Delphi应用程序不能被认证为windows 8,因此不能包括在windows应用程序商店?
>可以在编译之后将SafeSEH表添加到PE文件(例如从映射文件或调试符号中提取所需的信息),或者我们绝对需要编译器/链接器支持,因此必须等到Embarcadero实现此功能吗?

要清除,我的应用程序是windows 32位桌面应用程序(64位兼容),而不是Metro应用程序。

解决方法 我不能回答问题1.但是,我很难想象,使用这个词必然意味着该规则是可选的。

至于问题2,你需要从编译器/链接器的支持。你不能合理地期望使用PE编辑后链接工具。考虑下面的代码:

try  Beep;except  on E: Exception do    Writeln(E.Classname,': ',E.Message);end;

编译器发出以下命令:

Project1.dpr.11: try0041C3AA 33C0             xor eax,eax0041C3AC 55               push ebp0041C3AD 68C9C34100       push 41c3c9 // exception handler is at 41c3c90041C3B2 64FF30           push DWord ptr fs:[eax]0041C3B5 648920           mov fs:[eax],espProject1.dpr.12: Beep;0041C3B8 6A00             push 0041C3BA E8E1CEFEFF       call MessageBeep0041C3BF 33C0             xor eax,eax0041C3C1 5A               pop edx0041C3C2 59               pop ecx0041C3C3 59               pop ecx0041C3C4 648910           mov fs:[eax],edx0041C3C7 EB59             jmp 41c4220041C3C9 E97291FEFF       jmp @HandleOnException0041C3CE 0100             add [eax],eax0041C3D0 0000             add [eax],al0041C3D2 E42F             in al,f0041C3D4 41               inc ecx0041C3D5 00DA             add dl,bl0041C3D7 C3               ret 0041C3D8 41               inc ecx0041C3D9 00A3D83E4200     add [ebx+[+++]423ed8],ahProject1.dpr.15: Writeln(E.Classname,E.Message);........

现在,真正的异常处理程序是HandleOnException,在System.pas中实现。但是,推送到堆栈的地址是$ 0041c3c9,这是包含try / except块的代码的本地地址。这意味着为了创建一个SafeSEH PE部分,你需要找到每一个try / except你的代码。虽然这显然是可行的,但我不认为这是易处理。

我想象,x86编译器的SEH异常处理程序将只是在System.pas中声明的_HandleXXX函数。在这种情况下,添加一个PE部分只列出这些功能作为后链接步骤将是很容易的。但是,由于每个try / except都有自己的本地异常处理程序,我现在相信只有编译器作者可以实际地希望添加SafeSEH PE部分。

就我所看到的,没有QC报告要求对x86 windows编译器的SafeSEH支持。我建议您记录QC报告和官方支持案例。

更新:完成对@haimg成功在哪里我失败,并且管理定位QC报告:QC#106781。

总结

以上是内存溢出为你收集整理的桌面Delphi应用程序是否可以通过Windows 8认证(使用Windows App认证包)?全部内容,希望文章能够帮你解决桌面Delphi应用程序是否可以通过Windows 8认证(使用Windows App认证包)?所遇到的程序开发问题。

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

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
桌面Delphi应用程序是否可以通过Windows 8认证(使用Windows App认证包)?_语言综合_内存溢出

桌面Delphi应用程序是否可以通过Windows 8认证(使用Windows App认证包)?

桌面Delphi应用程序是否可以通过Windows 8认证(使用Windows App认证包)?,第1张

概述显然,Delphi(任何版本) does not support safe exception handlers(/ SAFESEH在Visual Studio中切换)。当在Windows 8上使用Windows Desktop应用程序认证工具包时,会导致警告。针对Windows 8桌面应用程序,每 certification requirements: Your app must be comp 显然,Delphi(任何版本) does not support safe exception handlers(/ SAFESEH在Visual Studio中切换)。当在windows 8上使用windows Desktop应用程序认证工具包时,会导致警告。针对windows 8桌面应用程序,每 certification requirements:

Your app must be compiled using the /SafeSEH flag to ensure safe exceptions handling

显然Delphi缺少这个开关,所以它不能做。我的问题是:

>我的理解是正确的,即使Kit只显示一个警告(不是失败),因为这是一个“必须”的要求,今天任何Delphi应用程序不能被认证为windows 8,因此不能包括在windows应用程序商店?
>可以在编译之后将SafeSEH表添加到PE文件(例如从映射文件或调试符号中提取所需的信息),或者我们绝对需要编译器/链接器支持,因此必须等到Embarcadero实现此功能吗?

要清除,我的应用程序是windows 32位桌面应用程序(64位兼容),而不是Metro应用程序。

解决方法 我不能回答问题1.但是,我很难想象,使用这个词必然意味着该规则是可选的。

至于问题2,你需要从编译器/链接器的支持。你不能合理地期望使用PE编辑后链接工具。考虑下面的代码:

try  Beep;except  on E: Exception do    Writeln(E.Classname,': ',E.Message);end;

编译器发出以下命令:

Project1.dpr.11: try0041C3AA 33C0             xor eax,eax0041C3AC 55               push ebp0041C3AD 68C9C34100       push 41c3c9 // exception handler is at 41c3c90041C3B2 64FF30           push DWord ptr fs:[eax]0041C3B5 648920           mov fs:[eax],espProject1.dpr.12: Beep;0041C3B8 6A00             push 0041C3BA E8E1CEFEFF       call MessageBeep0041C3BF 33C0             xor eax,eax0041C3C1 5A               pop edx0041C3C2 59               pop ecx0041C3C3 59               pop ecx0041C3C4 648910           mov fs:[eax],edx0041C3C7 EB59             jmp 41c4220041C3C9 E97291FEFF       jmp @HandleOnException0041C3CE 0100             add [eax],eax0041C3D0 0000             add [eax],al0041C3D2 E42F             in al,f0041C3D4 41               inc ecx0041C3D5 00DA             add dl,bl0041C3D7 C3               ret 0041C3D8 41               inc ecx0041C3D9 00A3D83E4200     add [ebx+423ed8],ahProject1.dpr.15: Writeln(E.Classname,E.Message);........

现在,真正的异常处理程序是HandleOnException,在System.pas中实现。但是,推送到堆栈的地址是$ 0041c3c9,这是包含try / except块的代码的本地地址。这意味着为了创建一个SafeSEH PE部分,你需要找到每一个try / except你的代码。虽然这显然是可行的,但我不认为这是易处理。

我想象,x86编译器的SEH异常处理程序将只是在System.pas中声明的_HandleXXX函数。在这种情况下,添加一个PE部分只列出这些功能作为后链接步骤将是很容易的。但是,由于每个try / except都有自己的本地异常处理程序,我现在相信只有编译器作者可以实际地希望添加SafeSEH PE部分。

就我所看到的,没有QC报告要求对x86 windows编译器的SafeSEH支持。我建议您记录QC报告和官方支持案例。

更新:完成对@haimg成功在哪里我失败,并且管理定位QC报告:QC#106781。

总结

以上是内存溢出为你收集整理的桌面Delphi应用程序是否可以通过Windows 8认证(使用Windows App认证包)?全部内容,希望文章能够帮你解决桌面Delphi应用程序是否可以通过Windows 8认证(使用Windows App认证包)?所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存