FileSystemWatcher не наблюдает за изменениями в папке Program Files (x86)
Я пытаюсь написать простой C# сервис для просмотра папки и уведомления моего приложения, когда эта папка обновляется. Я нашел несколько замечательных примеров использования FileSystemWatcher, но он вообще не работает, когда я указываю путь к папке в папке c:\Program Files (x86).
Мой код работает нормально, когда я устанавливаю путь к другим папкам. Я подумал, что, возможно, он не смог прочитать путь из-за скобок в названии. Я попытался назвать папку в корне диска C и использовал круглые скобки, но это тоже не сработало. Я не уверен, что именно проблема здесь или как обойти это. Это проблема с разрешениями? Есть ли способ избежать символов в пути, даже если они технически "законны"?
private void InitializeComponent()
{
this.watchReflectAssetFolder = new System.IO.FileSystemWatcher();
((System.ComponentModel.ISupportInitialize)(this.watchReflectAssetFolder)).BeginInit();
//
// watchReflectAssetFolder
//
this.watchReflectAssetFolder.EnableRaisingEvents = true;
this.watchReflectAssetFolder.IncludeSubdirectories = true;
this.watchReflectAssetFolder.Path = "C:\\Program Files (x86)\\Reflect Systems\\ReflectDistributor\\Cache\\WEBCASTS";
this.watchReflectAssetFolder.Changed += new System.IO.FileSystemEventHandler(this.watchReflectAssetFolder_Changed);
//
// LevisAssetCopyService
//
this.ServiceName = "LevisAssetCopyService";
((System.ComponentModel.ISupportInitialize)(this.watchReflectAssetFolder)).EndInit();
}
private void watchReflectAssetFolder_Changed(object sender, System.IO.FileSystemEventArgs e)
{
string ChangeType = e.ChangeType.ToString();
//write a log entry for the appropriate changetype.
levisLog.WriteEntry("File Watch Type: " + ChangeType);
if (ChangeType == "Created")
{
levisLog.WriteEntry("File: " + e.FullPath + " " + e.Name + " Created");
}
else if (ChangeType == "Deleted")
{
levisLog.WriteEntry("File: " + e.FullPath + " " + e.Name + " Deleted");
}
else if (ChangeType == "Changed")
{
levisLog.WriteEntry("File: " + e.FullPath + " " + e.Name + " Changed");
}
}