mirror of
https://github.com/QL-Win/QuickLook.git
synced 2025-09-04 11:49:03 +00:00
Safely check office preview handler
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
// Copyright © 2017-2025 QL-Win Contributors
|
||||
//
|
||||
// This file is part of QuickLook program.
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace QuickLook.Plugin.OfficeViewer;
|
||||
|
||||
internal static class CLSIDRegister
|
||||
{
|
||||
public const string Office = "{84F66100-FF7C-4fb4-B0C0-02CD7FB668FE}";
|
||||
public const string Visio = "{279D6C9A-652E-4833-BEFC-312CA8887857}";
|
||||
|
||||
public static string GetName(string clsid)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Such as `Computer\HKEY_CLASSES_ROOT\CLSID\{84F66100-FF7C-4fb4-B0C0-02CD7FB668FE}`
|
||||
string displayName = Registry.GetValue($@"HKEY_CLASSES_ROOT\CLSID\{clsid}", string.Empty, null)?.ToString();
|
||||
return displayName;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.WriteLine("Error reading registry: " + e.Message);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@@ -49,8 +49,15 @@ public class Plugin : IViewer
|
||||
if (Directory.Exists(path))
|
||||
return false;
|
||||
|
||||
if (Extensions.Any(path.ToLower().EndsWith))
|
||||
return PreviewHandlerHost.GetPreviewHandlerGUID(path) != Guid.Empty;
|
||||
if (!Extensions.Any(path.ToLower().EndsWith))
|
||||
return false;
|
||||
|
||||
var previewHandler = PreviewHandlerHost.GetPreviewHandlerGUID(path);
|
||||
if (previewHandler == Guid.Empty)
|
||||
return false;
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(CLSIDRegister.GetName($"{{{previewHandler}}}")))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@@ -38,7 +38,7 @@ public class PreviewHandlerHost : Control
|
||||
private IPreviewHandler _mCurrentPreviewHandler;
|
||||
|
||||
/// <summary>
|
||||
/// Initialialises a new instance of the PreviewHandlerHost class.
|
||||
/// Initialize a new instance of the PreviewHandlerHost class.
|
||||
/// </summary>
|
||||
public PreviewHandlerHost()
|
||||
{
|
||||
@@ -82,7 +82,7 @@ public class PreviewHandlerHost : Control
|
||||
if (ext != null)
|
||||
{
|
||||
// open the key that indicates the GUID of the preview handler type
|
||||
var test = ext.OpenSubKey("shellex\\{8895b1c6-b41f-4c1c-a562-0d564250836f}");
|
||||
var test = ext.OpenSubKey(@"shellex\{8895b1c6-b41f-4c1c-a562-0d564250836f}");
|
||||
if (test != null) return new Guid(Convert.ToString(test.GetValue(null)));
|
||||
|
||||
// sometimes preview handlers are declared on key for the class
|
||||
@@ -90,7 +90,7 @@ public class PreviewHandlerHost : Control
|
||||
if (className != null)
|
||||
{
|
||||
test = Registry.ClassesRoot.OpenSubKey(
|
||||
className + "\\shellex\\{8895b1c6-b41f-4c1c-a562-0d564250836f}");
|
||||
className + @"\shellex\{8895b1c6-b41f-4c1c-a562-0d564250836f}");
|
||||
if (test != null) return new Guid(Convert.ToString(test.GetValue(null)));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user