Я использую FileSystemWatcher
, чтобы проверить наличие изменений в .exe
файлах в любом месте на диске.
FileSystemWatcher Watcher;
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
public void Start() {
Watcher = new FileSystemWatcher("C:") {
NotifyFilter = NotifyFilters.Attributes | NotifyFilters.CreationTime | NotifyFilters.FileName | NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.Size | NotifyFilters.Security,
Filter = "*.exe",
IncludeSubdirectories = true
};
Watcher.Created += OnChanged; //Among other events
Watcher.EnableRaisingEvents = true;
}
private void OnChanged(object source, FileSystemEventArgs e) {
Debug.WriteLine(e.FullPath);
}
Проблема заключается в том, если для пути наблюдателя установлено значение C:
для проверки для файлов на всем диске C:
и при запуске моего приложения в любом месте на диске C:
(например, C:\Users\Name\Desktop\App.exe
) наблюдатель не запускает никаких событий.
Если вместо этого установить путь к C:\Users
, тогда наблюдатель будет запускать события - но это, конечно, ограничено изменениями, внесенными в файлы в C:\Users
, что не помогает, если файл находится в Program Files
или в таком виде.
Та же проблема возникает, если у меня есть наблюдатель, проверяющий диск D:
, когда мое приложение находится где-нибудь на диске D:
.
Так что, кажется, невозможно установить путь к root диска, на котором запущено приложение. Что может быть причиной этого?