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

  • KliptOut KwazeeKilla

    KliptOut Kwa

    24 ŞUBAT 2010
  • Michael Lummio

    Michael Lumm

    25 Mayıs 2007
  • wolfys you tube

    wolfys you t

    22 Kasım 2006