首页  >  文章  >  后端开发  >  如何从 C 启动可执行文件:'system()”的更安全替代方案?

如何从 C 启动可执行文件:'system()”的更安全替代方案?

Barbara Streisand
Barbara Streisand原创
2024-11-02 01:21:02244浏览

  How to Launch Executables from C  :  A Safer Alternative to `system()`?

从 C 启动可执行文件:system() 的替代方案

在 C 中,可以使用 system 来实现从另一个可执行文件启动可执行文件() 函数,但这种方法会带来安全性和系统效率问题。更稳健的方法涉及利用 CreateProcess() 函数。

<code class="cpp">#include <windows.h>

void startup(LPCTSTR lpApplicationName) {
   STARTUPINFO si;
   PROCESS_INFORMATION pi;

   ZeroMemory(&si, sizeof(si));
   si.cb = sizeof(si);
   ZeroMemory(&pi, sizeof(pi));

  CreateProcess(lpApplicationName, 
         argv[1], 
         NULL, 
         NULL, 
         FALSE, 
         0, 
         NULL, 
         NULL, 
         &si, 
         &pi
    );
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
}</code>

使用 CreateProcess():

  1. 定义如上所示的startup() 函数.
  2. 指定 lpApplicationName 中可执行文件的路径。
  3. 调用 CreateProcess() 启动可执行文件。
  4. 关闭进程和线程句柄以进行资源清理。

错误故障排除:

确保指定的可执行文件路径正确。所提供的代码中遇到的错误可能是由于“OpenFile.exe”的路径无效。

以上是如何从 C 启动可执行文件:'system()”的更安全替代方案?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn