यह पोस्ट @Matt Howells 'के उत्तर के विस्तार के रूप में लक्षित है, विशेष रूप से उन लोगों के लिए जो विस्टा या Win7 के तहत जॉब ऑब्जेक्ट्स का उपयोग करके समस्याओं में भाग लेते हैं , खासकर यदि आपको AssignProcessToJoblbject पर कॉल करते समय एक्सेस निषेध त्रुटि (' 5 ') मिलती है।
tl; डॉ
विस्टा और Win7 के साथ संगतता सुनिश्चित करने के लिए, .NET माता-पिता की प्रक्रिया में निम्नलिखित प्रकटन जोड़ें:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<v3:trustInfo xmlns:v3="urn:schemas-microsoft-com:asm.v3">
<v3:security>
<v3:requestedPrivileges>
<v3:requestedExecutionLevel level="asInvoker" uiAccess="false" />
</v3:requestedPrivileges>
</v3:security>
</v3:trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<!-- We specify these, in addition to the UAC above, so we avoid Program Compatibility Assistant in Vista and Win7 -->
<!-- We try to avoid PCA so we can use Windows Job Objects -->
<!-- See https://stackoverflow.com/questions/3342941/kill-child-process-when-parent-process-is-killed -->
<application>
<!--The ID below indicates application support for Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
</application>
</compatibility>
</assembly>
ध्यान दें कि जब आप विज़ुअल स्टूडियो 2012 में नया प्रकट जोड़ते हैं, तो इसमें उपरोक्त स्निपेट पहले से ही शामिल होगा ताकि आपको इसे सुनने से कॉपी करने की आवश्यकता न हो। इसमें विंडोज 8 के लिए एक नोड भी शामिल होगा।
पूरी व्याख्या
यदि आप जिस प्रक्रिया को शुरू कर रहे हैं वह पहले से ही किसी अन्य नौकरी के साथ जुड़ी हुई है, तो आपका जॉब एसोसिएशन एक एक्सेस अस्वीकृत त्रुटि के साथ विफल होगा। प्रोग्राम कम्पेटिबिलिटी असिस्टेंट असिस्टेंट डालें, जो विंडोज विस्टा में शुरू होकर सभी प्रकार की प्रक्रियाओं को अपने काम में लगाएगा।
विस्टा में आप अपने एप्लिकेशन को पीसीए से अलग कर सकते हैं ताकि एक एप्लिकेशन मैनिफ़ेस्ट शामिल किया जा सके। Visual Studio ऐसा करने के लिए लगता है। स्वचालित रूप से .NET ऐप्स के लिए, इसलिए आप वहां ठीक हैं।
एक सरल प्रकट अब Win7 में कटौती नहीं करता है। [१] वहाँ, आपको विशेष रूप से यह बताना होगा कि आप अपने प्रदर्शन में टैग के साथ Win7 के साथ संगत हैं। [2]
इससे मुझे विंडोज के बारे में चिंता करने लगी। 8. क्या मुझे एक बार फिर से अपना रूप बदलना होगा? जाहिर तौर पर बादलों में एक विराम है, क्योंकि विंडोज 8 अब एक प्रक्रिया को कई नौकरियों से संबंधित है। [३] इसलिए मैंने अभी तक इसका परीक्षण नहीं किया है, लेकिन मुझे लगता है कि यह पागलपन अब खत्म हो जाएगा यदि आप बस समर्थित जानकारी के साथ एक मेनिफ़ेस्ट शामिल करते हैं।
टिप 1 : यदि आप विजुअल स्टूडियो के साथ एक .NET ऐप विकसित कर रहे हैं, जैसा कि मैं कर रहा था, तो यहां [4] आपके एप्लिकेशन मैनिफ़ेस्ट को कस्टमाइज़ करने के बारे में कुछ अच्छे निर्देश हैं।
टिप 2 : विज़ुअल स्टूडियो से अपना एप्लिकेशन लॉन्च करने से सावधान रहें। मैंने पाया कि उपयुक्त प्रकटन को जोड़ने के बाद, मुझे अभी भी पीसीए के साथ समस्या थी जब विज़ुअल स्टूडियो से लॉन्च किया गया था, भले ही मैंने डिबगिंग के बिना स्टार्ट का उपयोग किया हो। हालाँकि, एक्सप्लोरर से मेरे एप्लिकेशन को लॉन्च करना काम कर रहा है। रजिस्ट्री का उपयोग करते हुए पीसीए से बहिष्कार के लिए मैन्युअल रूप से devenv जोड़ने के बाद, वीएस से नौकरी की वस्तुओं का उपयोग करने वाले अनुप्रयोगों को शुरू करने के साथ-साथ काम करना शुरू कर दिया। [5]
टिप 3 : यदि आप कभी यह जानना चाहते हैं कि क्या पीसीए आपकी समस्या है, तो अपने एप्लिकेशन को कमांड लाइन से लॉन्च करने का प्रयास करें, या प्रोग्राम को नेटवर्क ड्राइव पर कॉपी करें और वहां से चलाएं। पीसीए उन संदर्भों में स्वचालित रूप से अक्षम हो जाता है।
[१] http://blogs.msdn.com/b/cjacks/archive/2009/06/18/pca-changes-for-windows-7-how-to-tell-us-you-are-not-an -installer-ले-2-क्योंकि-हम-बदल-नियम-ऑन-you.aspx
[२] http://ayende.com/blog/4360/how-to-opt-out-of-program-compatibility-assistant
[३] http://msdn.microsoft.com/en-us/library/windows/desktop/ms681949(v=vs.85).aspx : "एक प्रक्रिया विंडोज 8 में एक से अधिक नौकरी से जुड़ी हो सकती है"
[४] मैं वीएस २००? का उपयोग करते हुए एक आवेदन पत्र को कैसे प्रकट कर सकता हूं?
[५] नौकरी की वस्तु में मेरी प्रक्रिया शुरू करने वाले विज़ुअल स्टूडियो डिबगर को कैसे रोकें?