2014-12-18 14 views
6

Bu dosya, bir dosyayı belirli bir konuma kopyalamaya çalıştığımda çöküyor ve bu hatayı veriyor.Hata: 'System.UnauthorizedAccessException' türünde işlenmeyen bir özel durum mscorlib.dll dosyasında oluştu

string startupDirectory = "C:\\Users\\Tyler\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup"; 
File.Copy(startupDirectory, "Startup.exe"); 

Online okumak ve yönetici haklarına denenmiş ve bir "app.manifest" dosyası oluşturduk var: Ben ayarlarında, uygulama bildirim bu dosyaya ayarlanmış olduğunu doğruladı

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
<requestedExecutionLevel level="highestAvailable" uiAccess="false" /> 

ama hala bana aynı hatayı veriyor.

File.SetAttributes(startupDirectory, FileAttributes.Normal); 

Bu WinForms ve ben de pencerelerde 7 değilim ama bunu dünyaya istiyorum: bir dizin değil bir dosya olduğu için o iş düşünmüyordu gerçi

Ben de bu olayı denedim windows 8+ için. Bunu nasıl yaparım?

Şimdiden teşekkürler!

+0

Kaynak dosya adının adı nedir? StartupDirectory değişkeninde bundan bahsettin mi? – Avijit

+0

Başlıkta _solved_, hiç kimseye yardımcı olmaz. Verilen cevaplardan başka bir çözüm bulursanız, kendi sorunuzu cevaplayabilir ve kabul edilmiş bir cevap olarak işaretleyebilirsiniz. Bu şekilde başkalarının aynı türden bir problemle karşılaşması da yardımcı olacaktır. – mbx

cevap

2

public static void Copy(string sourceFileName, string destFileName); 

İlk aşırı deneyin kaynak 2 aşırı yük hedef i nedeni olabileceğini düşünüyorum olduğu bu

File.Copy("Startup.exe",startupDirectory); 

erişim izinlerini ayarlamayı deneyin gelen .Net kullanıcı için "Tam denetim" için dosyaları okuyor/kaydediyorsunuz.

:

Erişim İçin Belirli dosya için IIS sunucusunda Engellendi Hata, aşağıda bu kesinlikle

Bir UnauthorizedAccessException biri 3 şeyler ifade erişim engellendi sorunu çözecektir

1- Goto to C:\\Users\\Tyler\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup 

2- Right click on your file -> Properties -> Pop Up of User properties appears -> click on Security tab-> click on Edit -> select Users-> tick on Allow Full Control -> Click Ok 

adımları takip edin

  • Arayanın gerekli izni yok.
  • yolu bir dizindir.
  • yolu salt okunur bir dosya belirtildi.
+0

İlk seçenek üzerinde kafam karıştı ... İkinci ve üçüncü çalışmadı ve bulamadığım IIS_IUSRS – Nullone

+0

@ Tyler13579'u tam olarak kontrol edemiyorum. Tam kontrol kullanıcı için –

+0

tam denetim zaten kontrol ediliyor ve grileşiyor bu yüzden değiştiremiyorum – Nullone

1

bu deneyin:

File.Copy(startupDirectory, "Startup.exe", true); 
    File.SetAttributes("Startup.exe", FileAttributes.Normal); 
+0

Bana aynı hatayı verdi – Nullone

3

Bu istisna, bir Windows hatası tetiklenir. Özel bir "bu kesinlikle hiçbir anlam ifade et" hata kodu yok, sadece bir "erişim engellendi" hata kodu üretir. Hangi .NET bir UnauthorizedAccessException için çevirir.

Burada "anlamsız" bir sorun, bir dosya kopyalama yöntemiyle bir dizini kopyalamaya çalıştığınızdır. Dizinler dosya değildir. Bir dizinin kopyalanması, önce yeni bir dizin oluşturulmasını ve daha sonra dizindeki tüm dosyaların kopyalanmasını gerektirir. .NET bunun için bir yönteme sahip, çoğu C# programcısı 'yanlış' ad alanı olduğunu düşünmeye eğilimlidir. Bu Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory() 'dir.

Ancak bu sorun hakkında biraz daha düşünmeniz gerekecek, tabii ki "startup.exe" adlı yeni dizini çağırmak mantıklı değil.Muhtemelen bir özel dosyasını Başlangıç ​​dizininden kopyalamak istediği için, bunun ne olabileceğini tahmin edemeyiz.

1

Visual Studio'yu Yönetimsel Haklarla çalıştırabilirsiniz. (Windows7'yi farz edelim, başlangıç ​​menüsünde Visual Studio simgesini sağ tıklayın ve "Yönetici olarak çalıştır" ı tıklayın.)