5

我使用system()函数来调用certmgr.exe我的 C 代码。一旦我启动我的可执行文件,就会出现一个命令提示符,显示证书已成功安装。

但我不希望打开命令提示符。怎么做??

任何其他可用于调用 C 语言中的“exe”的方法..

谢谢,,,

4

5 回答 5

5

在 Windows 上执行此操作的最简单方法是调用ShellExecute. 通过SW_HIDE以确保不显示任何控制台窗口。

您也可以使用CreateProcess,但调用起来有点棘手。使用该CREATE_NO_WINDOW标志来抑制控制台窗口。

于 2012-05-21T10:17:50.683 回答
4

我不会使用系统来运行任何东西..这就是为什么:http ://www.cplusplus.com/forum/articles/11153/

您可以使用 ShellExecute 运行应用程序http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx通过 SW_HIDE 就完成了。

于 2012-05-21T10:20:14.400 回答
3

没有办法cmd.exe静默/在后台运行。但是,请查看start命令及其相关/B选项:

启动一个单独的窗口以运行指定的程序或命令。

START ["title"] [/D 路径] [/I] [/MIN] [/MAX] [/SEPARATE | /共享] [/低 | /正常 | /高 | /实时 | /高于正常 | /BELOWNORMAL] [/AFFINITY ] [/WAIT] [/B​​] [命令/程序] [参数]

[...] B 在不创建新窗口的情况下启动应用程序。应用程序忽略了 ^C 处理。除非应用程序启用 ^C 处理,否则 ^Break 是中断应用程序的唯一方法。

你会过得更好CreateProcess

于 2012-05-21T10:17:20.830 回答
2

WINAPI 有一个CreateProcess()函数可以用来运行另一个可执行文件。此函数有几个参数可以提供不显示控制台窗口的机制certmgr.exe(来自进程创建标志参数):

CREATE_NO_WINDOW 该进程是一个在没有控制台窗口的情况下运行的控制台应用程序。因此,未设置应用程序的控制台句柄。

于 2012-05-21T10:18:25.893 回答
0

TED 在此链接中的回答最终帮助了我...

这可能对将来的某些人有所帮助...

其他人提到使用 CreateProcess (大概是为了重定向输出)。发生这种情况的一般原因是您通过“系统”运行的程序是命令行程序。如果它是您自己编译的东西,您可以通过将其构建为 GUI 程序来摆脱控制台窗口。您应该能够通过包含 Windows.h 并使用 WinMain() 作为入口点而不是 main() 来做到这一点

于 2012-05-24T04:40:41.707 回答