惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
S
Securelist
MyScale Blog
MyScale Blog
Jina AI
Jina AI
罗磊的独立博客
The Cloudflare Blog
美团技术团队
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
博客园 - 三生石上(FineUI控件)
月光博客
月光博客
雷峰网
雷峰网
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
博客园 - Franky
博客园 - 聂微东
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MongoDB | Blog
MongoDB | Blog
T
Tailwind CSS Blog
Attack and Defense Labs
Attack and Defense Labs
博客园_首页
Latest news
Latest news
Apple Machine Learning Research
Apple Machine Learning Research
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Hacker News
The Hacker News
G
GRAHAM CLULEY
Simon Willison's Weblog
Simon Willison's Weblog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
U
Unit 42
D
Docker
Webroot Blog
Webroot Blog
N
Netflix TechBlog - Medium
T
Tor Project blog
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LINUX DO - 最新话题
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
B
Blog
Recent Announcements
Recent Announcements
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
Security Latest
Security Latest
V2EX - 技术
V2EX - 技术
N
News | PayPal Newsroom
Microsoft Security Blog
Microsoft Security Blog

博客园 - Jason.NET

请不要为了自己的商业目地不择手段 加密狗保护的VFP软件破解 (朋友之作,代发) 使 Framework 2.0 的程序集不用安装 Framework 就可以运行的工具免费发布了 怎样给没有源代码的.net程序添加修改功能 谁不需要赚钱 -- 想,还要敢想 - Jason.NET 发布一个武汉的.net程序员招骋信息 中国软件业的混乱,观总价值2亿项目后的感叹 - Jason.NET - 博客园 刚刚收到来至 Reliasoft Corporation 的一封版权申明信 我想列出一个保护类软件的黑名单 排名和积分都大大降低了?怎么回事? Thinstall 包装 Dotnet 程序分析 一款非混淆软件 for .net 保护 各种Web脚本下,日历的实现方法 为什么浏览器有这么多标准??? 由浅至深,谈谈.NET混淆原理 -- 五(MaxtoCode原理),六(其它保护方法) QQ有漏洞??? 由浅至深 谈谈.NET混淆原理 (四) -- 反混淆(原理 + 工具篇) WEB程序员,界面美化是你心中永远的痛吗? 由浅至深 谈谈.NET混淆原理(三)-- 流程混淆(续)
DOTNET 32位下的程序在64位下真的可以运行吗? - Jason.NET - 博客园
Jason.NET · 2006-11-02 · via 博客园 - Jason.NET

理论上,32位下编译过的DOTNET在64位下是可以运行的,因为虚拟机会帮你做转换。但,如果你编程的习惯不好,也有可能不能运行。

近来,在做64位开发,MAXTOCODE 要支持 64位平台和 Vista 嘛。发现一个问题,在32位环境下运行很正常的软件,在64位下运行却得不到正确的值。

如例:

  [DllImport("KERNEL32.DLL", EntryPoint="GetModuleHandleA", CharSet=CharSet.Ansi, SetLastError=true, ExactSpelling=true)]
  private static extern int GetModuleHandle(string lpModuleName);

  如果你的调用是 int m_handle = GetMethodHandle("");

  这样的语句绝对会在 64 位获取不到正确的值。

  原因很简单, int 是 32 位的,而在 64位系统下,返回的地址是 00000000 00000000 的格式,系统会自动取基址,而抛弃了段址。

  所以,以后老老实实,开发定义都这样写吧

  [DllImport("KERNEL32.DLL", EntryPoint="GetModuleHandleA", CharSet=CharSet.Ansi, SetLastError=true, ExactSpelling=true)]
  private static extern IntPtr GetModuleHandle(string lpModuleName);

  而且要改掉用 int 的习惯。。。 别把以前 WINDOWS的开发习惯带进来,特别是咱们喜欢用 VB。NET 的朋友, LONG 也是 32 位的