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

  • L33TNoonProductions

    L33TNoonProd

    24 EYLÜL 2010
  • Muse

    Muse

    28 EYLÜL 2006
  • spectragirlz16's channel

    spectragirlz

    22 Ocak 2012