我有一个批处理文件“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/