我想开发一个兼容Windows XP SP2(32位)和Windows 7 64位的shell扩展(上下文菜单处理程序)。
是否可以在64位Windows中运行32位shell扩展,或者必须将外部扩展移植/重build为64位才能在Windows 7 64位中使用?
在64位操作系统中使用32位shell扩展是否存在任何缺点/已知问题?
32位应用程序在64位Windows上运行得很好,但我不确定shell扩展,因为如果我的理解是正确的,shell扩展是在proc COM服务器加载到资源pipe理器进程,这应该是一个64-在64位Windows中进行64位处理…或者是为在64位操作系统中运行的32位shell程序提供的“32位仿真”的一种forms?
外壳扩展只是一个DLL,规则是32位应用程序只能加载32位DLL,而64位应用程序只能加载64位DLL。 这是没有办法的。
在64位系统上,32位外壳扩展可能仍然有用,因为这意味着任何加载外壳扩展的32位第三方应用程序都可以使用。 例如,TortoiseSVN附带并安装了32位和64位版本,所以在64位Windows上,您仍然可以从32位应用程序(如第三方文件管理器)访问TortoiseSVN上下文菜单。
但是,Explorer本身在64位Windows上是64位本地的,所以如果你想让它在Explorer中工作,你需要一个64位版本的扩展。
外壳扩展是COM组件。 如果您将其作为进程外服务器进行安装,则Windows(DCOM)应负责所有32位64位编组。
MIDL编译器将创建正在加载的64位存根。
您可以使用32位浏览器,如64位Windows中的xplorer² 。 他们可以处理32位的DLL扩展,可以用来搜索内容,预览数据,也可以在上下文菜单中显示。 内置的浏览器是64位,忽略了32位扩展名。