如何检测应用程序是否从DVD运行



我正在尝试检测我们的应用程序是否在DVD上运行(因为这会禁用/启用逻辑中的功能)。到目前为止,我已经想出了下面的代码片段,它似乎很有效,尽管我真的想知道是否有检测这种情况的最佳实践。

    public static bool IsDVDInstallation()
    {
        try
        {
            string location = Assembly.GetExecutingAssembly().Location;
            var info = new DriveInfo(Path.GetPathRoot(location));
            return info.DriveType == DriveType.CDRom;
        }
        catch
        {
            return false;
        }
    }

如果您想知道应用程序(而不是您所在的任何特定程序集)是否在光盘驱动器上运行,那么您可能应该使用GetEntryAssembly()而不是GetExecutingAssembly()。除此之外,你上面的逻辑似乎完全合理。

为什么静默catch块?你以前尝试这个时遇到异常了吗?即使您这样做了,您也应该捕获您知道如何处理的特定异常,而不是所有异常。

您的解决方案是最坚固的。然而,如果从虚拟DVD驱动器运行(我想你不想要),它仍然可以工作

在这种情况下,您必须查询WMI以获得有关硬件的更多信息,并尝试弄清楚它是否是"真实的"-但这也不是一个安全的赌注,因此您现有的解决方案应该为您提供任何服务,除了知道自己在做什么的超级用户(无论如何您都无法对其进行太多攻击)

相关内容

  • 没有找到相关文章

最新更新