2010-03-30 17 views
6

Dosya sisteminde hangi kullanıcının C# kodundan silinen dosyayı bilmem gerekiyor. Tek bir fikir denetim kullanmaktır, ancak çok yavaş görünüyor ...Dosyayı silen kullanıcıyı nasıl alabilirim?

+0

Bahsettiğiniz "denetim" nedir? – BlueMonkMN

+1

@BlueMonkMN: Bu olabilir: NTFS erişim denetimi - http://support.microsoft.com/kb/310399; Bu en basit seçenek gibi görünüyor - sonuçta, bu, kullanıcı alanından ziyade çekirdeğe daha yakın çalışır, bu yüzden tüm dosya erişim olaylarını yakalamalıdır (düşük seviyeli disk erişimi hakkında emin olmamakla birlikte, muhtemelen burada gerekli değildir). Bununla birlikte ince ayar yapmaktan başka bir tecrübem yok. – Piskvor

+0

Denetim kullanmak istemiyorum, çünkü çok fazla dosyam var ve gerçekten de sistem günlüğüne – user295518

cevap

2

Dosya sistemindeki silmeleri yakalamak için FileSystemWatcher.Deleted olayını kullanabilirsiniz.

Uygulamaya bağlı olarak, bu noktada hangi kullanıcının bu olayın gerçekleşmesine neden olabileceğini de öğrenebilirsiniz (bu, FileSystemEventArgs'un bir parçası değildir).

+0

spam olacaktır. Ben izleyici kullanıyorum, ancak kullanıcı adı bu şekilde almaya çalıştığınızda: System.Security.AccessControl.FileSecurity sec = new FileSecurity (Path, System.Security.AccessControl.AccessControlSections.Owner); return sec.GetOwner (typeof (System.Security.Principal.NTAccount)) Değeri;, kullanıcı belirleyemediği için bir istisna atar – user295518

+0

@ user: WindowsIdentity.GetCurrent() 'ı deneyin.' Name 'http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity. aspx –

1

Bu, dosya sisteminden alınabilir mi bilmiyorum, ancak olası bir yolu, Silinmiş bir olayı tetiklemek için av FileSystemWatcher nesnesini kullanmaktır. Dezavantajı gözlemci uygulaması her zaman çalışan olması gerekir. Bir tersi, eğer uygunsa, sadece belirli bir klasörü izleyebilirsiniz.

+0

DosyaSystemWatcher dosya silinen kullanıcı hakkında bilgi vermez gibi görünüyor ... – user295518

+0

Hayır, ama belki de bu dosya aracılığıyla erişilebilir olabilir. Dosyayı değiştiren kullanıcıyı sahip olmak zorunda değilsiniz. Ama yine de, dosya muhtemelen daha sonra silinmiştir. Bu yüzden tahmin ettiğim istisnayı al. –

+0

Belki de bu kaynak koddan silinmiş dosyanın dosya bilgilerine nasıl erişileceğini anlayabilirsiniz? http://ntfsundelete.com/downloads/ –

İlgili konular