2008-12-16 6 views
5

मेरे पास डेल्फी 7 में लिखा गया एक एप्लीकेशन है जिसे चलाने के लिए व्यवस्थापक निजीकरण की आवश्यकता नहीं होती है।मेरा एप्लिकेशन मुझे Vista में Windows और System32 फ़ोल्डर में फ़ाइलों को सहेजने की अनुमति क्यों देता है?

किसी कारण से मैं अनुप्रयोगों के भीतर से c: \ windows और c: \ windows \ system32 में फ़ाइलों को सहेजने में सक्षम हूं, भले ही अनुप्रयोग ने यूएसी ऊंचाई से अनुरोध नहीं किया है। मैं यूएसी के साथ पर व्यवस्थापक के रूप में लॉग इन हूं और मैंने डिफ़ॉल्ट यूएसी सेटिंग्स में से कोई भी नहीं बदला है। वास्तव में फ़ाइलें विंडोज एक्सप्लोरर के तहत भी दिखाई देती हैं। मैं 'व्यवस्थापक के रूप में चलाएं' विकल्प का उपयोग नहीं कर रहा हूं।

यदि मैं वही प्रोफाइल के तहत वर्डपैड का उपयोग करके वही काम करने का प्रयास करता हूं तो मुझे अपेक्षित त्रुटि मिलती है।

कोई विचार क्या चल रहा है?

Th एप्लिकेशन सहेजने के लिए ओले संरचित संग्रहण का उपयोग कर रहा है और यदि यह मदद करता है, तो निम्न प्रकट होता है।

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <assemblyIdentity type="win32" name="DelphiApplication" version="1.0.0.0" processorArchitecture="*"/> 
<dependency> 
<dependentAssembly> 
    <assemblyIdentity 
    type="win32" 
    name="Microsoft.Windows.Common-Controls" 
    version="6.0.0.0" 
    publicKeyToken="6595b64144ccf1df" 
    language="*" 
    processorArchitecture="*"/> 
</dependentAssembly> 
</dependency> 
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
      <security> 
        <requestedPrivileges> 
          <requestedExecutionLevel 
            level="asInvoker" 
            uiAccess="false"/> 
        </requestedPrivileges> 
      </security> 
    </trustInfo> 
</assembly> 

संपादित करें: मेरा आवेदन स्पष्ट करने के लिए डिफ़ॉल्ट रूप से इन स्थानों पर कुछ भी नहीं बचाता है। मैं मानक फ़ाइल सहेजें संवाद के माध्यम से इन स्थानों को चुन रहा हूँ।

अद्यतन

मुझे पता चला है क्यों अपने आवेदन के ऊपर प्रकट सहित बावजूद विरासत के रूप में इलाज किया जा रहा था। यह पता चला कि एक दूसरा मैनिफेस्ट भी शामिल किया जा रहा था जिसमें 'ट्रस्टइन्फो' अनुभाग नहीं था। मैंने इस दूसरे मैनिफेस्ट को हटा दिया है और अब सब ठीक है।

धन्यवाद मैं चला रहा हूँ सभी मदद

उत्तर

16

यह पुराने अनुप्रयोगों को Vista के साथ संगत बनाने के लिए यूएसी की एक विशेषता है। यह किसी सिस्टम फ़ोल्डर को लिखने के लिए किसी भी अनुरोध को पुनर्निर्देशित करता है जिसमें उपयोगकर्ता को स्थानीय फ़ोल्डर की अनुमति नहीं है।

वे वर्तमान उपयोगकर्ता की प्रोफ़ाइल के तहत "AppData \ Local \ VirtualStore" फ़ोल्डर के अंतर्गत संग्रहीत हैं। इस सुविधा को अक्षम करने के लिए एक समूह नीति सेटिंग है: "प्रति उपयोगकर्ता उपयोगकर्ता को फ़ाइल और रजिस्ट्री लेखन विफलताओं को वर्चुअलाइज़ करें"

यह फ़ाइल और रजिस्ट्री वर्चुअलाइजेशन सुविधाएं Windows Vista मानक उपयोगकर्ता खातों के अंतर्गत विरासत अनुप्रयोगों को चलाने की अनुमति देने के लिए डिज़ाइन की गई हैं। विरासत एप्लिकेशन को एक विशिष्ट Vista मेनिफेस्ट के बिना 32-बिट निष्पादन योग्य के रूप में परिभाषित किया गया है। एक Vista Vista- संगत के रूप में अपने आवेदन को सजाने के लिए प्रकट यदि आप प्रदाता, इस वर्चुअलाइजेशन सेटिंग (अपने वर्डपैड उदाहरण के रूप में) आपके आवेदन को प्रभावित नहीं करेगा

मार्क Russinovich इस पर एक बड़ा लेख है: Inside Windows Vista User Account Control

0

के लिए के रूप में यूएसी के साथ एक व्यवस्थापक चालू।

क्या आपका मतलब है कि आप व्यवस्थापक के रूप में लॉग ऑन हैं या आप का मतलब है कि आप अपना डेल्फी एप्लिकेशन "व्यवस्थापक के रूप में चलाएं" (यानी एक उन्नत टोकन के साथ) विकल्प के साथ चलाते हैं?

यदि उत्तरार्द्ध आपके आवेदन के मामले में सी: \ विंडोज को लिखने की अनुमति होगी।

+0

मैं एक व्यवस्थापक के रूप में लॉग इन हूं। मैंने 'व्यवस्थापक के रूप में चलाएं' विकल्प का उपयोग नहीं किया है। स्पष्टीकरण के लिए अद्यतन होगा – Jamie

0

फ़ाइलों को आपकी उपयोगकर्ता निर्देशिका के तहत वर्चुअल लोकेशन में समाप्त हो जाएगा, जब तक कि आपके पास यूएसी अक्षम न हो।

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