"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > C++ में निष्पादन योग्य फ़ाइलों को सुरक्षित रूप से कैसे लॉन्च करें: CreateProcess() आपका सर्वश्रेष्ठ विकल्प क्यों है?

C++ में निष्पादन योग्य फ़ाइलों को सुरक्षित रूप से कैसे लॉन्च करें: CreateProcess() आपका सर्वश्रेष्ठ विकल्प क्यों है?

2024-11-09 को प्रकाशित
ब्राउज़ करें:285

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

निष्पादन योग्य फ़ाइलें लॉन्च करने के लिए CreateProcess() का उपयोग करना

इस गाइड में, हम यह पता लगाएंगे कि किसी अन्य C निष्पादन योग्य के भीतर से एक निष्पादन योग्य फ़ाइल (.exe) कैसे खोलें।

सिस्टम का उपयोग करने के नुकसान()

समाधान में जाने से पहले, यह महत्वपूर्ण है सिस्टम() फ़ंक्शन को नियोजित करने के खतरों पर प्रकाश डालें। System() कई कमियां प्रदर्शित करता है:

  • यह खतरनाक है, संभावित रूप से आपके प्रोग्राम को धीमा कर रहा है।
  • यह सुरक्षा को कमजोर करता है, क्योंकि आपके पास निष्पादित आदेशों पर कोई नियंत्रण नहीं है। इससे प्रशासकीय विशेषाधिकारों के साथ अनजाने में दुर्भावनापूर्ण प्रोग्राम चल सकते हैं।
  • इसे अक्सर एंटीवायरस सॉफ़्टवेयर द्वारा सुरक्षा खतरे के रूप में चिह्नित किया जाता है।

इसके बजाय CreateProcess()

का उपयोग करना सिस्टम(), हम 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