无法使用32位程序为正在运行的64位系统服务

最近在做一个补丁管理功能,其中有一个过程是把补丁从服务器下载下来,然后进行安装。

发现在Windows Vista及其之后的Windows 7、Windows 8等系统中,微软的提供了两种格式的补丁包:.psf和.cab,在Windows XP之前,是会有.exe格式的补丁文件,直接运行就可以进行安装。我选择了安装.cab格式的补丁包,安装的时候需要执行一个命令,如下:

dism /online /add-package /packagepath:补丁包路径

用管理员权限运行CMD命令窗口,输入命令,就可以安装系统对应的补丁包。

我们需要用VC代码运行命令,我的程序是32位的,操作系统是64位的,补丁包是64位的,在CMD窗口中执行命令运行的很嗨皮,但是用代码执行就会报错:无法使用32位dism为正在运行的64位系统服务。。。

就是说不能用32位的程序执行这个命令为64位系统安装补丁包。

看到了一个解决方案,将命令卸载脚本里,执行脚本就可以了,所以立即效仿,下面是脚本内容

cd /d C:\Windows\Sysnative
dism /online /add-package /packagepath:补丁包路径

第一句是为了调用System32中的cmd.exe,就是64位的命令行程序。

system执行脚本,成功运行。

如此应该是使用了64位的cmd.exe执行了命令。

但是在这之前尝试用CreateProcess打开System32下的cmd.exe,执行命令并没有成功,有些奇怪的。

原文地址:https://www.cnblogs.com/w1ng/p/10453005.html

时间: 2024-11-05 11:43:14

无法使用32位程序为正在运行的64位系统服务的相关文章

This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed(在64位模式下运行安装了32位的Oracle客户端组件时,会发生此问题)

部署win服务时出现下面的问题: 在事件查看器中看到如下错误: 日志名称: Application来源: ***调度服务日期: 2014/5/21 12:53:21事件 ID: 0任务类别: 无级别: 错误关键字: 经典用户: 暂缺计算机: ams-webserver描述:Service cannot be started. Achievo.Utility.DataAccess.DbException: Attempt to load Oracle client libraries threw

32位vs2010的项目如何在64位系统上运行

64位注册 1. 关闭Visual Studio.2. 在Visual Studio Tools目录,以管理员身份运行Visual Studio Command Prompt (2010),[注:这个在开始--所有程序--microsoft visual studio 2010 下面]切换目录到"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin”. ( 我的是v7.0A )[注:用cd命令切换目录]3. 执行命令:corflags /

VBA在32位下没问题,到64位异常报错

64 位 Visual Basic for Applications 概述 Microsoft Visual Basic for Applications (VBA) 是 Microsoft Office 附带的 Visual Basic 版本.在 Microsoft Office 2010 中,VBA 包括可使 VBA 代码同时在 32 位和 64 位环境中正确运行的语言功能. 注意:默认情况下,Office 2010 安装 32 位版本.在安装过程中,您必须明确选择安装 64 位版本. 对于

32位 PLSQL Developer 连接不上64位的 oracle 数据库问题处理

碰到这个问题,网上搜索了很多,大多解释的不准确,探索之后按自己的理解写一下怎么解决. 现象:问题网上说的比较清楚了,使用 PLSQL Developer 连接数据库会报一个与无法定位 oci.dll 文件的问题,可能有不同的报发,但问题都是在说这个文件的问题. 原因:这里使用的 PLSQL Developer 是32位,而数据库是64位的,所以 PLSQL Developer 无法使用数据库的64位 oci.dll 库. 解决:安装一个32位的数据库客户端,然后搜索其中的 oci.dll 文件的

使用32位PLSQL通过64位的ORACLE客户端连接到64位的数据库

oracle客户端:11.0.2(64位,官网有) plsql:plsqldev1104.zip  是个百度找的安装包 引用教程: A:http://jingyan.baidu.com/article/fb48e8be4c7c206e622e1491.html B:https://jingyan.baidu.com/album/49ad8bce4f934e5834d8faa8.html?picindex=7 1.安装客户端,安装完成后在D:\app\Administrator\product\1

MiniCRT 64位 linux 系统移植记录:64位gcc的几点注意

32位未修改源码与修改版的代码下载: git clone git@github.com:youzhonghui/MiniCRT.git MiniCRT 64位 linux 系统移植记录 MiniCRT是<程序员的自我修养:链接,转载于库>的作者俞甲子写的小型的C运行时库.里面提供了printf,malloc,free,fopen等比较常用的函数实现. 之所以要捣鼓这个东西,是因为要自己写一个链接器,链接标准库的时候出了麻烦,一些符号在整个libc中都找不到定义,标准库又太大,研究源码,翻文档都

win8.1 64位+oracle11g R2 64位 +PL/SQL16.5破解版 64位

安装时搜索了很多帖子,很多就是复制粘贴(完全不需要什么IP,host),有的版本不对,有的版本太老,今天决定贴出自己的处女贴 oracle的安装很简单,不需要说什么了,PL/SQL真是恶心死 步骤如下: 1.在你解析的目录下先找到readme.txt文件,根据环境变量配置环境 D:\install\PLSQL      |-- instantclient_11_2   (文件夹内有很多文件)            |-- tnsnames.ora      |-- PLSQL Developer

64位IOS系统中敲壳提取32位程序

测试机一直是5s和6,Clutch敲壳,实际是一个内存dump的过程,所以每次敲壳后的程序载入IDA都不能开心的F5来查看交叉引用以及简要逻辑. 终于决定要搞下这个坑,发现竟然并不是太简单的事情,或许还是IOS的相关知识掌握的不多. 首先,我们查找到lipo这个东西.lipo是command-tools里面的工具,之前或许是随着xcode一起下发的,貌似某个6.x的版本之后,就独立了出来,需要单独下载. xcode-select --install 此处也是一个坑,为了文件交换的方便,我使用的是

利用Code::Blocks搭建64位C++开发平台

0.前言 随着64位计算机的普及,编写64位程序成为程序员基本的要求.我在<体验Code::Blocks下的C++编程>中描述了利用Code::Blocks官方提供的封装了编译器的安装包(codeblocks-17.12mingw-setup.exe)搭建开发环境编写C++程序的方法.但是,官方提供的安装包中的编译器是32位的,只能用于开发32位程序.如果你想开发64位的程序,就必须自己安装另外的编译器,而不是使用原来在安装包里的. 下面,我就介绍一下利用Code::Blocks搭建64位C+