c ++ createprocess powershell作为管理员,隐藏,不要等待它

时间:2015-01-25 01:27:18

标签: c++ powershell

这就是我所拥有的,没有命令启动powershell.exe并在它之后直接关闭。 为什么它不起作用?

int main(int argc, char *argv[])
{

[...]
CreateProcess( NULL,   // No module name (use command line)
    "powershell.exe -command \".C:\\test\\t.ps1\"   ",      
[...]
        &si,            // Pointer to STARTUPINFO structure
        &pi );          // Pointer to PROCESS_INFORMATION structure

return 0;
}

在普通的cmd中,命令看起来像这样:

powershell -command ".c:\test\t.ps1"

并且在文件中这个单行,如果你想测试它:

write-host "hello world" |out-file C:\test\hi.txt

应该在控制台中编写hello world并在文件夹

中创建hi.txt

1 个答案:

答案 0 :(得分:1)

命令行应该是:

CreateProcess(NULL, // No module name (use command line)
    "powershell.exe -command \"& {C:\\test\\t.ps1}\"",  

CreateProcess(NULL, // No module name (use command line)
    "powershell.exe -file C:\\test\\t.ps1",  

通常,对于执行脚本,请使用-File,除非退出代码对您很重要。如果是,请使用-Command,因为-File存在错误,即使出现错误,它也始终返回0(成功)。

如果要执行powershell.exe以提示提升,请改用ShellExecute API。为"RunAs"传递lpOperation,您可以使用nShowCmd参数指定隐藏窗口。