」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 C++ 中安全地啟動執行檔:為什麼 CreateProcess() 是您的最佳選擇?

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

發佈於2024-11-09
瀏覽:745

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

利用CreateProcess() 啟動可執行檔

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

使用 system() 的陷阱

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

  • 它很糟糕,可能會減慢程式速度。
  • 它會破壞安全性,因為您無法控制執行的命令。這可能會導致無意中以管理員權限執行惡意程式。
  • 它經常被防毒軟體標記為安全威脅。

使用 CreateProcess()

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

#include 

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

  ZeroMemory( &si, sizeof(si) );
  si.cb = sizeof(si);
  ZeroMemory( &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 
                 &si,            // STARTUPINFO structure
                 &pi             // PROCESS_INFORMATION structure
                 );

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

解決錯誤

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

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3