VB的32位程序在64位系统中出现文件和注册表自动转向的解决方法_vb

通常用VB 写的程序在32位系统上可以正常的运行,但到了64位系统中虽然可以运行但是无法修改OEM信息。经过查找原因可以发现,当我们在访问文件夹"SYSTEM32"的时候系统会自动转向到文件夹"SYSWOW64"下,当我们在访问某些注册表键值的时候,和文件转向类似,系统也会自动地把程序的访问转向到Wow6432Node下面。

先来谈谈文件系统的转向,查找了一些资料,并没有VB相关的资料,但是可以查到2个相关函数:Wow64DisableWow64FsRedirection(关闭系统转向)和Wow64RevertWow64FsRedirection(打开系统转向)。
VB的声明如下:

Private Declare Function Wow64RevertWow64FsRedirection Lib "kernel32.dll" ()
Private Declare Function Wow64DisableWow64FsRedirection Lib "kernel32.dll" ()

然后用CALL Wow64DisableWow64FsRedirection语句来关闭文件系统的转向。

再来谈谈注册表项的转向:

这个依然没有VB方面的资料,但是知道有函数RegOpenEx(VB有这个函数,用法见API浏览器)可以决定是否转向,只要在函数的samDesired【Long】参数上加256(&H100)就可以访问64位的注册表了。由于API访问注册表代码较多就不往上贴了。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索vb
, 32位程序
, 64位系统
, 自动转向
解决方法
64位系统32位注册表、c 关闭注册表转向、win7 32位注册表下载、打开32位注册表、32位注册表,以便于您获取更多的相关知识。

时间: 2024-10-06 08:27:19

VB的32位程序在64位系统中出现文件和注册表自动转向的解决方法_vb的相关文章

使用.netFx4.0提供的方法解决32位程序访问64位系统的64位注册表

原文:使用.netFx4.0提供的方法解决32位程序访问64位系统的64位注册表   我们知道目标平台是32位的程序运行在64位的系统上,去访问部分注册表的时候系统自动重定向到win32node节点对应的项去了.但是做过安装程序开发人员可能遇到过"需要去掉重定向"的问题,即直接访问64位程序的注册表. 网上有很多winAPI的方法,关闭注册表的重定向稍微复杂.(关闭文件系统的重定向稍微简单些,搬过来就可以用:关闭注册表的重定向我现在没看懂.) 我这里提供的方法不需要关闭重定向,也不需要

c++-开发32位程序和64位程序有什么区别?假设用C++开发

问题描述 开发32位程序和64位程序有什么区别?假设用C++开发 假设现要开发一个win程序,用C++语言,那么开发我32bit程序跟开发64bit程序有什么区别? 解决方案 你是问开发有什么不同,ok,其实google一下答案就有了. 1. 首先数据类型不一样 在32位平台整型啊,指针啊都是32位的,到64位平台就是64位了,你要注意这个区别,比如溢出. 还有一些数据结构变化了,比如time_t,你的小心. 浮点数的结构也在32和64也不太一样 2. 数据转换发生了变化,比如在32位平台做以下

C# 32位程序访问64位系统注册表

原文:C# 32位程序访问64位系统注册表 我的上一篇文章已经阐述了"32位程序和64位程序在64位平台上读\写注册表的区别",那么接下来将要回答上篇所留下来的一个问题:32位程序如何访问64位系统注册表(即:64位程序所访问的注册表位置). 我们已经知道: ①:本机模式 64 位程序运行在纯模式下,并且访问键和存储在以下注册表子键中的值:HKEY_LOCAL_MACHINE\Software ②:32 位程序运行在 WOW64 模式下,并且访问键和值存储在以下注册表子项中:HKEY_

64位win7旗舰版系统中u盘NTFS格式化选项不见了的解决方法

  方法一. 1)首先将U盘插上win7系统电脑之后,打开设备管理器,然后选择"磁盘驱动器"中的U盘; 2)双击u盘出现属性框,策略中选择"为提高性能而优化",确定. 方法二. 1)首先打开win7系统中的"开始-运行",输入CMD,然后输入Convert盘符:/fs:ntfs.

win7 64位系统中下载文件到u盘时卡住如何解决

  原因分析:如果下载比较大的文件,就很有可能会遇到这样的问题,因为大文件被下载到U盘之前,系统会检测U盘空间,而且会持续很长时间,另外,U盘的写入速度如果不理想,也非常有可能产生这种问题. 一.如果仅仅只是卡的话,具体方法如下: 1.首先将下载的文件先放在本地磁盘,然后压缩成小文件包,然后再放到U盘中. 2.重新换一个写入速度比较快的U盘. 二.如果是卡死的话,可以根据下面的方法进行排查: 1.检查一下U盘是不是已经满了,有时候U盘要满了,但是系统可能出错不会提示,就只会卡死,所以建议大家在下

Windows 7系统迁移指南——从32位过渡到64位

Windows--包括http://www.aliyun.com/zixun/aggregation/34065.html">WindowsXP,Vista,Windows 7以及该操作系统的服务器版本--已经从32位过渡到了64位.硬件制造商有足够的时间为其产品提供32/64位的驱动程序. 事实上,我们现在买到的几乎每个扫描仪,打印机,视频摄像头或其他硬件设备都能提供这两种平台的驱动.因此如果我们添置一套新设备时无需担心兼容问题.但是如果我们要将以前购买的打印机,扫描仪或摄像头进行迁移,

关于32位系统和64位系统运行asp。net程序的兼容性问题。

问题描述 我现在做了一个asp.net网站,用的C#.vs2008开发环境,操作系统是windowsserver2008x32.数据库:oracle10g.运行一切正常.现在客户换了一台服务器,装windowsserver2008X64版本.不知道我的这个网站部署到64位的系统是有问题没有.如果有兼容问题,该怎么解决. 解决方案 解决方案二:如果程序是纯.NET写的,完全没有问题.如果程序使用了32bit的dll或者activex组件,那么需要把程序集编译成32bit.解决方案三:网页中有一个f

Win7 32位系统和64位系统有什么区别

  首先,相信选择64位Windows7的网友中很有大比例是内存大于或等于4GB的.在32位Windows7下,可能会显示内存可使用3.25G,这让很多网友感到不安.没错,可寻址的内存空间确实是32位Windows7和64位Windows7最为显著的特点. 32位的CPU(准确的说是运行在32位模式下的CPU)只能寻址最大4GB的内存,受制于此,32位的操作系统也只能识别最大4GB的内存,由于在系统中,除了内存之外,还有很多存储设备,因此,真正可以利用的内存空间肯定小于4GB,也就是我们看到的系

32位程序对64位进程的远程注入实现

本文讲的是32位程序对64位进程的远程注入实现, 0x00 前言 要对指定进程进行远程注入,通常使用Windows提供的API CreateRemoteThread创建一个远程线程,进而注入dll或是执行shellcode. 在64位系统下,该方法需要特别注意,注入的目标进程要同程序的结构保持一致,即32位程序只能对32进程作注入,64位程序只能对64位进程作注入,32位程序对64位程序进行注入时会失败(32位和64位的结构不同). 然而,在某些特殊的环境下,无法提前预知目标进程的结构,准备两个