आप विंडोज 7 x64 पर एएसएलआर कैसे अक्षम करते हैं ताकि मेरा प्रोग्राम हमेशा उसी पते पर साझा सीआरटी लोड करेगा?विंडोज 7 x64 पर आप एएसएलआर (पता स्थान लेआउट यादृच्छिकरण) को कैसे अक्षम करते हैं?
उत्तर
सभी रजिस्ट्री सेटिंग जबरन सक्षम या अक्षम करने के लिए सभी निष्पादन योग्य और पुस्तकालयों के लिए एएसएलआर अक्षम करने के लिए उपलब्ध है और HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\MoveImages
पर पाया जाता है।
* अपना * प्रोग्राम काम करने के लिए वैश्विक सिस्टम सेटिंग्स को न बदलें –
+1 मैं इसे आज़माउंगा। ऐसा लगता है कि मुझे क्या चाहिए, क्योंकि प्रति-कार्यक्रम आधार पर इसे बदलने से प्रभावित नहीं होगा (साझा) सीआरटी कैसे लोड किया जाता है। – Mehrdad
^यह। लेकिन आपको याद रखना चाहिए कि यदि यह एक वितरित अनुप्रयोग है, तो आपको यह नहीं करना चाहिए, और यदि यह एक अबाउट है, तो उपयोगकर्ता को प्रोग्रामेटिक रूप से ऐसा करने से पहले संकेत दें। –
पहले आपको लिंकर को एएसएलआर का उपयोग करने की अनुमति देने के लिए चुनना पड़ा था। अब, you have to opt out:
/DYNAMICBASE[:NO]
(विजुअल स्टूडियो 2012: विन्यास गुण -> लिंकर -> उन्नत -> "यादृच्छिक बेस पता")
आप भी इसे programmatically कर सकते हैं।
यह बहुत आसान है जब आपके पास एक प्रोजेक्ट है जिसे आप डिबगिंग कर रहे हैं, और आप चाहेंगे कि आपकी घड़ी विंडो में पते प्रत्येक रन को नहीं बदलते हैं। – EvilTeach
एन्हांस्ड मिटिगेशन एक्सपीरियंस टूलकिट (ईएमईटी), downloadable from Microsoft, इसे सिस्टम या प्रक्रिया के आधार पर एएसएलआर को सक्षम/अक्षम करने की अनुमति देता है।
क्या आप ऐसा करने के लिए _need_ करते हैं, या यह कुछ आसान बनाता है? –
@unclebrad: मैं वास्तव में ऐसा करने के लिए * ज़रूरत * करता हूं। – Mehrdad
ध्यान दें कि यह महत्वपूर्ण रूप से सिस्टम की सुरक्षा को कम करता है और केवल उपयोगकर्ता की अनुमति के साथ किया जाना चाहिए। –