首頁 > 後端開發 > C++ > 主體

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

Barbara Streisand
發布: 2024-11-02 01:21:02
原創
243 人瀏覽過

  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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板