मालिक की खिड़कियों को पुन: बदलकर 7 करें


95

किसी तरह मैंने गलती से सभी फाइलों को "नो ओनर" के लिए सबफ़ोल्डर में सेट कर दिया और मैं सभी अनुमतियों को परिवर्तित करने के लिए प्रतीत नहीं हो सकता। मैं एक-एक करके स्वामी को बदल सकता हूँ, फिर अनुमतियाँ सेट कर सकता हूँ लेकिन मैं सभी फ़ाइलों के स्वामी को कैसे बदल सकता हूँ। इस निर्देशिका में एक बार में?

जवाबों:


92

takeownकिसी फ़ोल्डर, उसके सभी सबफ़ोल्डर्स और फ़ाइलों को पुनरावर्ती रूप से स्वामित्व लेने के लिए कमांड प्रॉम्प्ट से उपयोग करें :

takeown /f "c:\folder\subfolder" /r

यह अच्छी तरह से काम करता है, लेकिन यदि आप अपने कमांड लाइन कंसोल को व्यवस्थापक के रूप में नहीं चलाते हैं तो यह उन फाइलों के लिए विफल हो सकता है जो आपके पास नहीं हैं।


105

वास्तव में टूटी हुई अनुमतियों को ठीक करने के लिए, इन दो आदेशों को एक के बाद एक चलाने के लिए सबसे अच्छा है:

takeown /f "C:\path\to\folder" /r
icacls "C:\path\to\folder" /reset /T

पहला व्यक्ति आपको सभी फाइलों का स्वामित्व देगा, हालाँकि यह पर्याप्त नहीं हो सकता है, उदाहरण के लिए यदि सभी फाइलों में "इनकार" करने के लिए सेट / रीड / एक्ज़िट अनुमतियाँ हैं। आप फ़ाइलों के स्वामी हैं, लेकिन फिर भी उनके साथ कुछ नहीं कर सकते।

उस स्थिति में, दूसरी कमांड चलाएं, जो टूटी हुई अनुमतियों को ठीक करेगा।


3
उत्कृष्ट तकनीकी सलाह ... आपका समाधान केवल एक ही काम था। एक बार फिर धन्यवाद।
carrabino

4
सबसे अच्छी सलाह, टेकऑन और आइकल्स दोनों का उपयोग करने की आवश्यकता है।
gnac

2
/ एक विकल्प उपयोगी है यदि आप 'वर्तमान स्वामी के बजाय व्यवस्थापकों के समूह को स्वामित्व देना चाहते हैं'। ऐसा करने के लिए आपके पास व्यवस्थापक विशेषाधिकार होने चाहिए। Ctrl-shift-enter का उपयोग करके cmd विंडो खोलने की आवश्यकता हो सकती है।
पीटरवर्मोंट

4
मैंने /D Yपैरामीटर को इसमें जोड़ा है takeownताकि यह पुन: पुष्टि की गई निर्देशिकाओं की पुष्टि कर सके जहां आपके पास 'सूची निर्देशिका' की अनुमति नहीं है।
जेरेन विर्ट प्लिमर्स

3
@JeroenWiertPluimers, हालाँकि यह एक अच्छी सलाह है कि मैंने इसे एडिट हटा दिया है क्योंकि यह (स्थानीय रूप से पर्याप्त) एक स्थानीय पैरामीटर है इसलिए अंग्रेज़ी विंडोज पर यह /D Yफ्रेंच एक /D O, शायद स्पेनिश पर होगा /D S, आदि
laurent

26

ध्यान दें कि cacls को हटा दिया गया है (Windows Vista के बाद से?) और यह आपको उपयोग करने की सलाह देता है icacls

यह आदेश किसी फ़ोल्डर पर अनुमतियों को पुन: रीसेट करेगा:

icacls "C:\path\to\folder" /reset /T

5

आप caclsकमांड प्रॉम्प्ट से उपयोग कर सकते हैं :

cacls "C: \ path \ to to folder" / E / T / C / G "एडमिनिस्ट्रेटर": F

/Tस्विच यह पुनरावर्ती कार्य करने के लिए अनुमति देता है। Administratorउस उपयोगकर्ता से बदलें जिसे आप अनुमति देना चाहते हैं।


1

मुझे बहुत लंबे रास्तों (256 से अधिक वर्णों) वाली फ़ाइलों की समस्या थी। दो आज्ञा

takeown /f "C:\path\to\really_long_folder_name" /r
icacls "C:\path\to\really_long_folder_name" /reset /T

इन फाइलों को छोड़कर वास्तव में लंबे रास्तों और नामों के साथ काम किया। मैंने नाम बदलना समाप्त कर दिया

"C:\path\to\really_long_folder_name"

सेवा

"C:\path\to\r"

और फिर चल रहा है

takeown /f "C:\path\to\r" /r /D Y
icacls "C:\path\to\r" /grant Everyone:(F) /t /c /q

जिसके बाद मैं फ़ोल्डरों का नाम बदलकर कुछ और समझदार बना सकता था। टेकऑन के / डीवाई ने संकेतों के लिए हां में जवाब दिया। आइकल्स के लिए मैंने सभी को पूर्ण पहुंच देने के लिए / अनुदान का उपयोग किया (जैसा कि मैं बस एक मृत पीसी से हार्ड ड्राइव पर डेटा तक पहुंचने का प्रयास कर रहा था), / टी के साथ उप फ़ोल्डर्स और फ़ाइलों को संसाधित करने के लिए, / q शांत मोड में चलाने के लिए (छिपाना) सफलताओं) और / सी त्रुटियों को दिखाने के लिए। मैंने उस प्रक्रिया को दोहराया, जब तक सभी फ़ाइलों की अनुमतियों को सफलतापूर्वक अपडेट नहीं किया गया, तब तक फ़ोल्डर्स का नाम बदलना।

उम्मीद है कि यह किसी ऐसे व्यक्ति की मदद करता है जो "कंटेनर एक्सेस में ऑब्जेक्ट्स को एन्यूमरेट करने में विफल" के समान त्रुटियों के साथ आया है, "एक पुरानी हार्ड ड्राइव से डेटा तक पहुंच प्राप्त करने की कोशिश करते समय मुझे मिल रही त्रुटियों"।


0

धन्यवाद @ this.lau_ के लिए / रीसेट टिप, यह ठीक वही है जो मुझे अपनी स्क्रिप्ट को पूरा करने के लिए CSC का स्वामित्व लेने और उसका बैकअप बनाने के लिए आवश्यक था। C: \ Windows \ CSC के स्वामित्व लेने के बाद अनुमतियाँ वंशानुक्रम के बारे में बहुत असंगत हो जाती हैं - / रीसेट स्विच ने मेरे लिए यह सीधे तय किया।

Function Copy-CSCData {
    $Datetime = Get-Date -Format yyyyMMdd.hhmmss
    $LogPath = 'PATH TO LOG'
    $CSCSource = 'C:\Windows\CSC\v2.0.6\namespace'
    $Dest = 'DESTINATION PATH'
    $icaclsource = "\\?\" + $CSCSource

    $CSCLogfile = "$LogPath\" + "$Datetime" + "_CSCRobocopy.log"

    icacls.exe $icaclsource /reset /T
    icacls.exe $icaclsource /grant :r "Everyone:(OI)(CI)F"

    Robocopy $CSCSource $Dest /Copy:DATSO /E /XO /Z /LOG+:$CSCLogfile /V /FP /NP /R:2 /W:2 /XF "~$*","*.tmp"
}

@ टेसल विलियम्स - यदि आप ऊपर दिए गए $ icaclsource चर को देखते हैं तो आप नोटिस करते हैं कि मैं स्रोत पथ के सामने "\?" जोड़ता हूं। इसे सामने से जोड़कर, यह लंबे समय तक फ़ाइल नाम स्वीकार करेगा। यह भी एक समस्या है जो मेरे पास थी लेकिन इसने इसे ठीक कर दिया! चीयर्स।

हंसी मजाक करना


सुपर उपयोगकर्ता में आपका स्वागत है! बस आपको बता दें कि "पिंगिंग" उपयोगकर्ता केवल टिप्पणियों में पोस्ट करने के लिए काम करता है, वास्तविक पोस्ट में नहीं । दुर्भाग्यवश आप अपने स्वयं के अलावा या अपने प्रश्नों के उत्तर पर टिप्पणी नहीं कर सकते, जब तक कि आपके पास 50+ प्रतिष्ठा न हो । देखें कि टिप्पणी @replies कैसे काम करती है? । ध्यान दें कि आप किसी को भी टिप्पणी में शामिल नहीं कर सकते। केवल पोस्ट के लेखक और कोई अन्य उपयोगकर्ता जो पहले ही टिप्पणी कर चुका है।
रॉबिनटेकस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.