2009-10-12 13 views
5

नाम से कार्य करते हुए अपने ही कार्यक्रम या दूसरों का उपयोग मैं जब बुला अगर प्रक्रिया CreateProcessWithLogonW या CreateProcessAsUserW साथ बनाई गई है चलाने के लिए विनसॉक नहीं मिल सकता है WinSock शुरू किया जा करने के लिए अनुमति नहीं है। यह इस त्रुटि देता है जब मैं सॉकेट बनाने के लिए:क्यों विंडोज किसी अन्य उपयोगकर्ता

WSAEPROVIDERFAILEDINIT 10106 

सेवा प्रदाता प्रारंभ करने में विफल।

The requested service provider could not be loaded or initialized. 

यदि या तो एक सेवा प्रदाता की DLL लोड (LoadLibrary विफल) नहीं हो सकता है यह त्रुटि दी है या प्रदाता के WSPStartup या NSPStartup समारोह

विफल रहा है।

हालांकि, WSAStartup एक त्रुटि को w/o लगता है। WSASocket के साथ बस सॉकेट बनाना यह लौटाता है।

अद्यतन:

त्रुटियाँ:

LoadUserProfile: त्रुटि कोड 2. फ़ाइल निर्दिष्ट

AdjustTokenPrivs नहीं मिली: त्रुटि कोड 5. निषेध

उत्तर

3

आप के रूप में ऑपरेटिंग Priv

4

शायद उपयोगकर्ता आपने पी को निष्पादित किया टीसीपी/आईपी स्टैक का उपयोग करने की अनुमति नहीं है?

किसी ऐसे उपयोगकर्ता उपयोगकर्ता के साथ एप्लिकेशन प्रारंभ करने का प्रयास करें जो आपका खाता नहीं है।

+0

मेरा खाता एक सीमित खाता है जो एक प्रक्रिया के रूप में winsock का उपयोग करने वाली प्रक्रिया बना रहा है। दोनों टीसीपी/आईपी स्टैक का उपयोग कर सकते हैं। मैंने एक व्यवस्थापक से दूसरे में भी कोशिश की और यह विफल हो गया। –

0

उस पर प्रोसेस मॉनीटर चलाएं और देखें कि यह फ़ाइल या रजिस्ट्री कुंजी ढूंढने में विफल रहा है या नहीं। शायद प्रतिरूपित उपयोगकर्ता की प्रोफ़ाइल लोड नहीं होती है और विंसॉक (या एक सेवा प्रदाता जो लोड करने का प्रयास कर रहा है) वहां कुछ ढूंढ रहा है।

1

क्या किसी अन्य उपयोगकर्ता के रूप में प्रक्रिया को चलाने के लिए आपके पास आवश्यक विशेषाधिकारों की कमी हो सकती है। OpenProcessToken को कॉल द्वारा एक्सेस टोकन में हैंडल प्राप्त करने का प्रयास करें और एडजस्ट टोकनिलेज पर कॉल करके SE_IMPERSONATE_NAME जोड़ें और फिर CreateProcessAsUserW पर कॉल करें। हालांकि मैंने खुद यह कोशिश नहीं की है।
Code snippet in Python to do something similar with win32 calls

+0

यहां तक ​​कि जब मैं एक व्यवस्थापक के रूप में प्रक्रिया को चलाता हूं AdjustTokenPrivs ERROR_ACCESS_DENIED लौटाता है। –

0

हमेशा मुख्य के शीर्ष के निकट WinSock शुरू करने और इसे चलाने छोड़ अधिनियम करना होगा। विंसॉक शुरू करने की आवश्यकता आर्किटेक्चर का दुर्घटना है और किसी भी समस्या डोमेन के लिए जर्मन नहीं है।

3

मुझे बिल्कुल एक ही समस्या का सामना करना पड़ा और यह पर्यावरण (!) के कारण था: स्पष्ट रूप से विनसॉक एक वैध SystemRoot पर्यावरण चर सेट करने की अपेक्षा करता है। मेरे मामले में मैं अपने ऐप के लिए विशिष्ट केवल एक पर्यावरण चर निर्दिष्ट करके CreateProcess() पर कॉल कर रहा था (कॉलर के पर्यावरण को विरासत के बिना), और यह असफल रहा।

यह जांचें कि आपने कॉलर के पर्यावरण के उत्तराधिकारी के लिए NULLlpEnvironment पर या तो SystemRoot पर्यावरण चर निर्दिष्ट करने के द्वारा अपनी प्रक्रिया बनाई है।

पूरी तरह से अनियंत्रित AFAIK, लेकिन यह मेरे लिए काम किया।

संबंधित मुद्दे