के तहत विफल रहता है मैं विंडोज 7 में विंडोज़ XP से विरासत कोड संकलित करने की कोशिश कर रहा हूं। यह संकलित करता है लेकिन रनटाइम पर विफल रहता है।CreateProcess विंडोज 7
CreateProcess() रिटर्न 0 और GetLastError() रिटर्न 2, जो अब विषमताएं के लिए CreateProcess
STARTUPINFO StartInfo;
memset(&StartInfo, 0, sizeof(StartInfo));
wcsncpy(astrCommandLine, L"TFTP", MAX_OSCOMMANDLINE_SZ-1);
BOOL bFuncRetn = CreateProcess(NULL,
astrCommandLine, // command line
NULL, // process security attributes
NULL, // primary thread security attributes
NULL, // handles are inherited
0, // creation flags
NULL, // use parent's environment
NULL, // use parent's current directory
&StartInfo, // STARTUPINFO pointer
&m_ProcInfo); // receives PROCESS_INFORMATION
करने के लिए अपने कॉल ERROR_FILE_NOT_FOUND
के लिए खड़ा है यहाँ है: जब TFTP के बजाय मैं calc चलाने के लिए, कैल्क पॉप अप मैं कमांड प्रॉम्प्ट में कहीं से भी अपनी कमांड लाइन पर जो कुछ भी कर सकता हूं उसे निष्पादित कर सकता हूं, इसलिए यह मुझे बताता है कि% PATH% c: \ windows \ system32 को जाना जाता है और सही तरीके से काम करता है।
मैंने Ansi तारों के साथ CreateProcessA को मजबूर करने की कोशिश की लेकिन मुझे एक ही परिणाम मिला। मैंने डीबग और कॉन्फ़िगरेशन और कमांड लाइन से भी रिलीज़ करने की कोशिश की।
कोई विचार?
संपादित करें: दोनों calc.exe और tftp.exe c: \ windows \ system32 में स्थित हैं जो सिस्टम पथ में हैं।
चल रहा है "सी: \ विंडोज \ system32 \ tftp" काम नहीं करता
क्या सिस्टम पथ की बजाय ऐप पथ द्वारा tftp पाया जा रहा है? यह समझा सकता है कि क्यों कैल्क पाया जाता है लेकिन tftp नहीं है। CreateProcess ऐप पथ का उपयोग नहीं करता है। मुझे लगता है कि आप कहीं भी StartInfo.cb सेट कर रहे हैं। –
बहुत कम उम्मीद है कि यह काम करेगा। निश्चित रूप से tftp.exe आपके प्रोग्राम की डिफ़ॉल्ट कार्य निर्देशिका में स्थित नहीं है। Calc.exe कोई समस्या नहीं है, यह पथ पर है। .exe के * पूर्ण * पथनाम को पास करें, जैसे c: \ foo \ bar \ tfpt.exe। –
मैंने StartInfo.cb – Eric