SORU
24 EYLÜL 2008, ÇARŞAMBA


Nasıl izinleri dizin veya dosya yazma için onay mı?

Bir dosya aşağıdaki gibi bir yöntemi kullanarak bazı veri yazan bir program var.


public void ExportToFile(string filename)
{
     using(FileStream fstream = new FileStream(filename,FileMode.Create))
     using (TextWriter writer = new StreamWriter(fstream))
     {
         // try catch block for write permissions 
         writer.WriteLine(text);


     }
}

Programı çalıştırırken bir hata alıyorum:

İşlenmeyen Özel Durum: System.UnauthorizedAccessException: yolu '' engellendi.yolum Erişim Sistem.._IO_Hata.WinİOError(Int32 errorCode, String maybeFullPath) Sistem.IO.FıleStream.Init(String path, FileMode mode, FileAccess access, nt32 hakları,,, Int32 bufferSize, Boolean useRights Paylaşımına paylaşmak FileOptions ptions, SECURITY_ATTRIBUTES secAttrs, msgPath String, Boolean bFromProxy) Sistem.IO.FıleStream..decimal(String path, FileMode mode, FileAccess access Dosya paylaşımına share, Int32 bufferSize, seçenekleri, Dize msgPath, Boolea FileOptions bFromProxy)

Ne kodu bu yakalamak gerekiyor ve nasıl erişim yapabilirim? soru:

CEVAP
24 EYLÜL 2008, ÇARŞAMBA


GÜNCELLEME:

Kodu this answer dayalı eski yöntemlerden kurtulmak için değiştirilmiş.

Güvenlik ad bunu denetlemek için kullanabilirsiniz:

public void ExportToFile(string filename)
{
    var permissionSet = new PermissionSet(PermissionState.None);    
    var writePermission = new FileIOPermission(FileIOPermissionAccess.Write, filename);
    permissionSet.AddPermission(writePermission);

    if (permissionSet.IsSubsetOf(AppDomain.CurrentDomain.PermissionSet))
    {
        using (FileStream fstream = new FileStream(filename, FileMode.Create))
        using (TextWriter writer = new StreamWriter(fstream))
        {
            // try catch block for write permissions 
            writer.WriteLine("sometext");


        }
    }
    else
    {
        //perform some recovery action here
    }

}

Bildiğim kadarıyla bu izin, kullanıcının bunu istemek bir şekilde olacak. Eğer programlama yoluyla eğer böyle yaparsanız, o zaman belaya girer ;) hepimizin

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jon Reed

    Jon Reed

    14 AĞUSTOS 2006
  • KSI

    KSI

    25 Temmuz 2009
  • MagmaRhino

    MagmaRhino

    16 Temmuz 2011