tekrarlayan sahibi pencerelerini değiştirme 7


95

Her nasılsa yanlışlıkla bir alt klasördeki tüm dosyaları "Sahip Yok" olarak ayarlıyorum ve tüm izinleri değiştiremiyorum. Sahibini değiştirip sonra izinleri ayarlayarak el ile tek tek değiştirebilirim, ancak tüm dosyaların sahibini nasıl değiştirebilirim bir kerede bu dizinde?

Yanıtlar:


92

takeownBir klasöre, tüm alt klasörlerine ve dosyalarına tekrar sahip olmak için komut isteminden kullanın :

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

Bu iyi çalışır, ancak komut satırı konsolunuzu yönetici olarak çalıştırmazsanız, sahip olmadığınız dosyalar için başarısız olabilir.


105

Gerçekten kırık izinleri düzeltmek için en iyisi bu iki komutu birbiri ardına çalıştırmaktır:

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

İlki size tüm dosyaların sahipliğini verecektir, ancak bu, örneğin tüm dosyaların "reddet" olarak ayarlanmış okuma / yazma / çalıştırma izinlerine sahip olması yeterli olmayabilir. Dosyaların size aittir, ancak yine de onlarla hiçbir şey yapamazsınız.

Bu durumda, kırık izinleri düzelten ikinci komutu çalıştırın.


3
Mükemmel teknik tavsiyeler ... çözümünüz işe yarayan tek çözümdü. Tekrar teşekkürler.
carrabino

4
En iyi tavsiye, hem alınan hem de icacls kullanmanız gerekir.
Aralık'ta

2
/ Bir seçenek, 'geçerli sahip yerine yöneticiler grubuna sahiplik' vermek istiyorsanız kullanışlıdır. Bunu yapmak için Yönetici ayrıcalıklarına sahip olmanız gerekir. Ctrl-shift-enter komutunu kullanarak cmd penceresini açmanız gerekebilir.
PeterVermont

4
/D YParametreyi ekledim, takeownböylece 'liste dizini' izinlerinin olmadığı yinelenen dizinleri otomatik olarak doğrular.
Jeroen Wiert Pluimers

3
@JeroenWiertPluimers, ben öyle olacak İngilizce Windows yüzden (aptalca yeterli) yerelleştirilmiş bir parametre olduğu gibi düzenlemeyi kaldırdık iyi bir tavsiye her ne kadar /D YFransız birinde, /D Obelki İspanyolca üzerinde, /D Svb
laurent

26

Önbelleklerin kullanımdan kaldırıldığını (Windows Vista'dan beri) ve kullanımınızı önerdiğini unutmayın icacls.

Bu komut tekrar tekrar bir klasördeki izinleri sıfırlayacaktır:

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

5

caclsKomut isteminden kullanabilirsiniz :

cacls "C: \ path \ - \ klasör" / E / T / C / G "Yönetici": F

/TAnahtar yinelemeli çalışmasını sağlar. Administratorİzin vermek istediğiniz kullanıcı ile değiştirin .


1

Çok uzun yollu (256 karakterden büyük) dosyalarda sorun yaşadım. İki komut

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

gerçekten uzun yolları ve isimleri olan bu dosyalar dışında çalıştı. Yeniden adlandırmayı bıraktım

"C:\path\to\really_long_folder_name"

için

"C:\path\to\r"

ve sonra çalışan

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

Bundan sonra klasörleri daha mantıklı bir şey olarak yeniden adlandırabilirdim. takeown'un / DY istemlerine evet cevaplar. İcacls için herkese tam erişim sağlamak için kullandım / verdim (ölü bir bilgisayardan sabit diskteki verilere erişmeye çalıştığım gibi), alt klasörleri ve dosyaları işlemek için / t, sessiz modda çalıştırmak için / q başarılar) ve / c hataları göstermek için. Tüm dosya izinleri başarıyla güncellenene kadar klasörleri yeniden adlandırarak işlemi tekrarladım.

Umarım bu, eski bir sabit sürücüden verilere erişmeye çalışırken "konteyner erişimindeki nesneleri numaralandırmak başarısız oldu" gibi hatalarla karşılaşan birine yardımcı oluyor.


0

Thanks / this.lau_ / reset ipucu için, bu tam olarak CSC'nin sahipliğini almak ve bir yedeğini almak için betiğimi tamamlamak için ihtiyacım olan şeydi. C: \ Windows \ CSC mülkiyeti alındıktan sonra izinler devralma konusunda çok tutarsızlık eğilimindedir - / reset anahtarı benim için düzeltti.

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"
}

@Thesle Williams - Yukarıdaki $ icaclsource değişkenine bakarsanız, kaynak yolunun önüne "\? \" Ekledim. Bunu önüne ekleyerek daha uzun dosya adlarını kabul eder. Bu aynı zamanda yaşadığım bir problem ama bu düzeltti! Şerefe.

alay etmek


Süper Kullanıcıya Hoşgeldiniz! Sadece "ping" kullanıcılar sadece değil, mesajların yorum yaparak çalıştığını bildirerek içinde fiili mesajların. Maalesef, 50’den fazla şöhretiniz olmadıkça kendi mesajınız dışındaki yazılar veya sorularınızın yanıtları hakkında yorum yapamazsınız . Bkz comment @ yanıtı çalışmak nasıl? . Bir yorumda kimseyi pingleyemeyeceğinizi unutmayın. Sadece gönderinin yazarı ve daha önce yorum yapan diğer kullanıcılar.
robinCTS 16:18
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.