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

  • J Medema

    J Medema

    11 EKİM 2006
  • MusicDeluxeTV

    MusicDeluxeT

    14 Mayıs 2010
  • OnlyFunClips

    OnlyFunClips

    16 ŞUBAT 2012