"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تشغيل الملفات القابلة للتنفيذ بشكل آمن في C++: لماذا يعد CreateProcess() خيارك الأفضل؟

كيفية تشغيل الملفات القابلة للتنفيذ بشكل آمن في C++: لماذا يعد CreateProcess() خيارك الأفضل؟

تم النشر بتاريخ 2024-11-08
تصفح:471

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

استخدام CreateProcess () لتشغيل الملفات القابلة للتنفيذ

في هذا الدليل، سنستكشف كيفية فتح ملف قابل للتنفيذ (.exe) من داخل ملف C آخر قابل للتنفيذ.

مزالق استخدام النظام()

قبل الخوض في الحل، من الضروري تسليط الضوء على مخاطر استخدام وظيفة النظام (). يعرض System() عدة عيوب:

  • إنه مورد، ومن المحتمل أن يؤدي إلى إبطاء برنامجك.
  • إنه يقوض الأمان، حيث لا يمكنك التحكم في الأوامر المنفذة. يمكن أن يؤدي هذا إلى تشغيل برامج ضارة عن غير قصد مع امتيازات المسؤول.
  • غالبًا ما يتم وضع علامة عليها كتهديد أمني بواسطة برامج مكافحة الفيروسات.

Employing 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