c++ - 如何从 C :\Windows\System32 folder? 执行 Windows System() 命令

标签 c++ c visual-c++ command

我有一个批处理文件“install.bat”存储在位置“

c:\Users\abc\xyz

”。 我想在管理模式下从

执行这个批处理文件

C:\Windows\System32

使用 System() API 的文件夹。谁能告诉我如何以编程方式实现此 VC++。

我的代码片段::

int ret = System("c:\Users\abc\xyz\install.bat");

如果我给出这个命令,批处理文件当然是从“c:\Users\abc\xyz”文件夹中执行的。但是我想从 System32 文件夹运行这个批处理文件?

提前致谢。

最佳答案

一个选择是将 cd 命令作为 .bat 文件的第一行。您可以更改调用进程的工作目录,但那是用锤子敲螺母。

如果您离开 system 函数,您可以调用 CreateProcess。这使您可以指定创建新流程时所需的所有详细信息。您需要运行命令解释器(通过读取 COMSPEC 环境变量找到它)。您可以将新进程的工作目录指定为 CreateProcess 的参数之一。

CreateProcess 虽然很难调用。它不会帮助您请求提升管理员权限。相反,您可以使用 ShellExecute。调用传递 “runas” 的动词,这将导致提升。

ShellExecute(0, "runas", "c:\\Users\\abc\\xyz\\install.bat", NULL, 
    "C:\\Windows\\System32", SW_SHOW);

关于c++ - 如何从 C :\Windows\System32 folder? 执行 Windows System() 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14633155/

相关文章:

C++ 使用暂停/恢复控件下载文件

CUDA 内核函数比等效的主机函数花费更长的时间

c - Microchip PIC24F单片机如何通过SPI增强缓冲模式正确接收数据?

c - 查找 C 中的段错误

c++ - 是否可以强制/检测锁顺序以防止死锁?

c++ - 在 C++ 中使用 unicode char 支持从 TCHAR 转换为 char*

c++ - OpenMP 中单个指令和部分指令之间的区别

c++ - 在构造函数中初始化 vector<vector<a type>> 成员

c++ - Visual Studio 2013 Boost-log v1_61_0 链接错误

visual-c++ - 使用OpenCV的本地构建/自构建的OpenCV项目的正确包含目录在哪里?