32位注册表无法导入到64位系统中
64位的系统最好就只是装64位的软件好了,32位的的注册表信息就算可以导入也只入一部份,有的软件支持两种,但总而言之,64位的注册表为了兼容,也将注册表 分为了两个部份,一个部分供32位的使用,一个部份供64位的使用。
当前计算机系统已经逐渐地从32位转到64位,XP,2003,VISTA都有64位的版本。
从目前而言,32位应用程序还是占了绝大多数,但是也有部分应用程序既有32位版本,又有64位版本。
为了保证32位程序可以顺利运行在64位系统上,微软提供了一套叫WOW64的模拟机制。
通常把这套系统称为WOW64。
从总体上来说,WOW64是一套基于用户模式的动态链接库,它可以把32位应用程序的发出的命令翻译成64位系统可以接受的格式。
从下图中可以大概地看出32位应用程序运行在64位系统上的方式。
当32位应用程序运行的时候,首先会去启动本地库加载器(Native Library Loader)。
加载器会识别出应用程序是32位的并且用特殊的方式来处理它。
加载器会为32位应用程序建立起一个WOW64的模拟环境并把控制权交给32位的Ntdll.dll。
运行在32位应用程序和64位Ntdll.dll之间的WOW64模拟环境会将32位应用程序的指令翻译成64位Ntdll.dll可以接受的方式,并且它也可以把系统的指令翻译成32位应用程序可以接受的方式。
2 如何判断系统是64位3 文件系统的转向32位进程不能加载64位Dll,64位进程也不可以加载32位Dll。
Windows的系统目录包含了所有安装的应用程序和它们的Dll文件,根据我们所述的规则,它应该被分为给64位应用程序的目录和给32位应用程序的目录。
如果不这样,我们就无法区分32位和64位的Dll文件。
对于64位应用程序,其文件通常被放在%windir%\system32和%programfiles%(比如:c:\program files)。
对于32位应用程序,其文件通常在%windir%\syswow64和C:\program files (x86)下面。
如果我们用32位程序去访问%windir%\system32,不管我们用硬编码还是其它的方式,系统都会自动地给我们转向到%windir%\syswow64下面。
这种转向对于每个32位应用程序默认都是打开的。
但是这种转向对于我们来说并不总是需要的。
那么我们可以在C#里面调用相关的API来关闭和打开这种转向。
常用的函数有3个,Wow64DisableWow64FsRedirection(关闭系统转向),Wow64RevertWow64FsRedirection(打开系统转向),Wow64EnableWow64FsRedirection(打开系统转向)。
但是Wow64EnableWow64FsRedirection在嵌套使用的时候不可靠,所以通常用上面的Wow64RevertWow64FsRedirection来打开文件系统转向功能。
在C#中,我们可以利用DllImport直接调用这两个函数。
但是要注意到的是,在32位的Kernel.dll中是没有这两个函数的。
那么在C++中应该使用LoadLibrary来动态加载这两个函数。
否则会因为找不到这两个函数而无法通过编译。
而且在目前的使用中,发现这两个函数有一个小小的问题。
如果我们在调用了Wow64DisableWow64FsRedirection后去调用Comdlg32.dll的GetOpenFileName函数,是无法调用成功的。
但是也得不到Error的值。
在C#中可以用如下的代码关闭和打开文件的转向。
声明调用规则[DllImport( "Kernel32.dll", charset=utf-8.Auto, SetLastError = true)] public static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);[DllImport( "Kernel32.dll", charset=utf-8.Auto, SetLastError = true)] public static extern bool Wow64RevertWow64FsRedirection(IntPtr ptr);关闭转向Wow64DisableWow64FsRedirection(ref Ptr);打开转向Wow64RevertWow64FsRedirection(Ptr);要注意的是,关闭和打开要成对出现。
以免出现混乱的行为。
4 注册表的转向为了防止注册表键冲突,注册表在某些键也分成了两个部分。
一部分是专门给64位系统访问的,另一部分是专门给32位系统访问的,放在Wow6432Node下面。
当32位程序去访问某些键值的时候,和文件转向类似,系统也会自动地把程序的访问转向到Wow6432Node下面。
Wow6432Node这个节点存在于HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER下面。
如果我们希望关闭这个转向的话,可以通过上面的Wow64DisableWow64FsRedirection和RegOpenKeyEx方法办到。
RegOpenEx方法在C#中调用声明方法如下:[DllImport("Advapi32.dll", charset=utf-8.Auto, SetLastError = true)]public static extern uint RegOpenKeyEx( UIntPtr hKey,string lpSubKey, uint ulOptions,int samDesired,out IntPtr phkResult);其中需要注意的是samDesired这个参数。
这个参数可以取 KEY_ALL_ACCESS, KEY_QUERY_VALUE, KEY_WOW64_64KEY等值(详情可以查阅MSDN)。
当我们已经关闭了文件系统的转向,那么就可以利用:(KEY_QUERY_VALUE | KEY_WOW64_64KEY)来得到注册表的完全访问权限。
这个地方需要注意的是,在Vista下面,有一些注册表项是只读的,如果用了KEY_ALL_ACCESS这个参数,就会出现“Access is denied” 这个错误(ErrorCode = 5)。
因此,如果不是要写入注册表的话,最好不要使用KEY_ALL_ACCESS。
我们可以...
win7 64位注册表与32位注册表能不能通用啊?如果可以的话,我就直...
方案一:1、这么棘手的问题估计是一些系统文件出问题了,所以第一步就是修复系统:按“Windows+X”点击“命令提示符管理员”,输入“SFC /scannow”回车(该操作可能需要一段时间,please wait a minute...),再输入“dism /online /cleanup-image /restorehealth”回车。
然后,估计还得等一会儿。
2、导致你安装不上的原因还有可能是你的注册表里残留的无用注册表引起的(比如删除过的用户信息注册表、过期软件注册表....),可以去百度上download一个注册表清理工具,很快就能清理完(即便不是这个原因导致的,清理一下注册表也没什么坏处)。
3、以上两步都完成后,中间也没出现不良状况的。
那么,你可以安装了,不过我个人建议使用本机安装镜像文件(或者介质文件),毕竟本是同根生嘛,还挺方便的。
4、具体方法是:解压ios镜像文件(打开介质文件),找到目录下source文件夹,进去,找到sxs文件夹,把它弄到D盘、E盘...随便哪个盘根目录下,记住,是根目录。
我的是H盘。
5、然后按“Windows+X”点击“命令提示符管理员”,进入dos界面,键入(直接粘贴就行,复制粘贴的话,一定要把那个H换成你存储sxs文件夹的盘)dism.exe /online /enable-feature /featurename:NetFX3 /Source:H:\sxs。
然后会出来一个进度条,几分钟就可以了。
6、好了,你可以在左下角搜索栏里输入“启用于关闭windows功能”,点开,你会发现,确实安装成功了。
你还可以试试那些没有Net 3.5不能安装的软件,现在是不是可以安装了?我的就是这么解决的。
XenCenter也能装上了。
方案二:另外,出现“Error: 0x800f0922”这样的情况你首先可以把安全管家一类的软件先停掉,这个错误可能是安全拦截造成的。
如果关掉还不行,你再试试我介绍的第一种方案吧。
如果在WINDOWS7 64位版中安装输入法“全音码”
64位的支持64位程序兼容32位,但都不能运行16位,想要运行可以这样操作:1)开始/运行,输入gpedit.msc打开组策略,在左侧选计算机配置/管理模板/Windows 组件/应用程序兼容性,在右侧窗口找到并双击打开“防止访问16位应用程序”选项,在弹出的窗口选择“已启用”,按确定即可。
2)运行/输入“regedit”回车打开注册表编辑器,在左侧界面依次展开到以下注册表项[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WOW]在右边窗口空白处鼠标右键“新建”——“DWORD 值,右击“新值 #1”,单击“重命名”,输入“DisallowedPolicyDefault”,按回车键,双击打开“DisallowedPolicyDefault”键值,在编辑 DWORD 值对话框中将数据数值修改为“1”,单击“确定”。
求sqlyog 64位破解版软件
V4.0 STEP 7 MicroWIN SP9版本支持的。
无论哪种方法,你总要去安装有Step7的Vista系统Copy系统信息至你的Win7,同时修改……这会是一个非常繁琐的过程。
简单的方法是,在Vista上安装,然后通过操作系统升级为Win7.繁琐的方法是:第一步:通过Orca软件修改下面这些文件的安装脚本CD_1\STEP7\Disk1\setup.msiCD_1\STEP7\HF1\Disk1\setup.msiCD_1\S7PCT\Disk1\setup.msiCD_1\S7-Plcsim\Disk1\setup.msiCD_1\Automation License Manager\Disk1\setup.msiCD_2\S7-Graph\Disk1\setup.msiCD_2\S7-Scl\Disk1\setup.msi在Orca中打开每一个文件,在Tables栏中选择“ControlCondition”,然后在右边选择DLG_InstallationRequirements,在Action中将Disable改为Enable第二步:从Vista上已经安装Step7专业版系统复制CommonFiles\Siemens文件夹,然后复制到Win7的相同目录下。
第三步:从安装有Step7的Vista系统的注册表中复制HKEY_LOCAL_MACHINE\SOFTWARE\Siemens\SINEC内容,然后复制到Win7系统注册表的相同位置上。
第四步:因为Win7不在支持HLP的帮助模式,因此你需要去微软下载HLP插件(需要正版验证)你说这个步骤烦不烦,有这点时间去这样做,还不如从Vista上直接升级了。
转载请注明出处51数据库 » 注册表监控软件 64位