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");
            }
        }

0 ответов

Другие вопросы по тегам