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
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
Nasıl bir dosya veya dizin için Gıt da...
Nasıl bir dosya veya dizin yolu ile be...
Nasıl bir dosya oluşturmak ve Java ile...
Nasıl bir dizin C veya C kullanarak do...
Nasıl bir dosya veya dizin'tam yo...