首頁  >  文章  >  後端開發  >  如何從 C 啟動可執行檔:「system()」的更安全替代方案?

如何從 C 啟動可執行檔:「system()」的更安全替代方案?

Barbara Streisand
Barbara Streisand原創
2024-11-02 01:21:02168瀏覽

  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