Cara Melancarkan Fail Boleh Laku Dengan Selamat dalam C : Mengapa CreateProcess() Adalah Pilihan Terbaik Anda?

Linda Hamilton
Lepaskan: 2024-10-29 18:35:03
asal
994 orang telah melayarinya

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

Menggunakan CreateProcess() untuk Melancarkan Fail Boleh Laku

Dalam panduan ini, kami akan meneroka cara membuka fail boleh laku (.exe) dari dalam boleh laku C yang lain.

Kesalahan Menggunakan sistem()

Sebelum mendalami penyelesaian, adalah penting untuk menyerlahkan bahaya menggunakan fungsi sistem(). System() mempamerkan beberapa kelemahan:

  • Ia adalah ресурсоёмким, berpotensi memperlahankan program anda.
  • Ia menjejaskan keselamatan, kerana anda tidak mempunyai kawalan ke atas arahan yang dilaksanakan. Ini boleh menyebabkan program berniat jahat secara tidak sengaja menjalankan dengan keistimewaan pentadbir.
  • Ia sering dibenderakan sebagai ancaman keselamatan oleh perisian antivirus.

Menggunakan CreateProcess()

Sebaliknya system(), kami mengesyorkan menggunakan fungsi CreateProcess(). Fungsi ini membolehkan anda melancarkan fail boleh laku, mencipta proses bebas.

#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 );
}
Salin selepas log masuk

Menyelesaikan Ralat

Ralat yang anda hadapi mungkin berpunca daripada fakta bahawa anda tidak menyatakan sepenuhnya laluan fail boleh laku. Pastikan anda memberikan laluan lengkap, termasuk nama fail.

Atas ialah kandungan terperinci Cara Melancarkan Fail Boleh Laku Dengan Selamat dalam C : Mengapa CreateProcess() Adalah Pilihan Terbaik Anda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!