首頁  >  文章  >  後端開發  >  如何在 C 中安全地啟動執行檔:為什麼 CreateProcess() 是您的最佳選擇?

如何在 C 中安全地啟動執行檔:為什麼 CreateProcess() 是您的最佳選擇?

Linda Hamilton
Linda Hamilton原創
2024-10-29 18:35:03996瀏覽

How to Launch Executable Files Securely in C  : Why CreateProcess() Is Your Best Choice?

利用CreateProcess() 啟動可執行檔

在本指南中,我們將探索如何從另一個C 執行檔中開啟執行檔(.exe )。

使用 system() 的陷阱

在深入研究解決方案之前,強調使用 system() 函數的危險至關重要。 System() 有幾個缺點:

  • 它是 ресурсоёмким,可能會減慢你的程式。
  • 它會破壞安全性,因為你無法控制執行的指令。這可能會導致無意中以管理員權限執行惡意程式。
  • 它經常被防毒軟體標記為安全威脅。

使用 CreateProcess()

而不是system() 中,我們建議使用 CreateProcess() 函數。此函數允許您啟動可執行文件,創建一個獨立的進程。

#include <windows.h>

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

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

  CreateProcess( lpApplicationName,   // executable path
                 argv[1],        // command line
                 NULL,           // process handle not inheritable
                 NULL,           // thread handle not inheritable
                 FALSE,          // no handle inheritance
                 0,              // no creation flags
                 NULL,           // parent's environment block
                 NULL,           // parent's starting directory 
                 &amp;si,            // STARTUPINFO structure
                 &amp;pi             // PROCESS_INFORMATION structure
                 );

  // Close process and thread handles. 
  CloseHandle( pi.hProcess );
  CloseHandle( pi.hThread );
}

解決錯誤

您遇到的錯誤可能是由於您沒有指定完整的進程可執行檔案的路徑。確保提供完整路徑,包括檔案名稱。

以上是如何在 C 中安全地啟動執行檔:為什麼 CreateProcess() 是您的最佳選擇?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn