我写了一个可以自动运行的程序。它会影响计算机的使用方式,因此,如果程序设置存在问题,则计算机可能无法使用。
我希望程序检测计算机何时以安全模式启动,以便打开程序的恢复菜单。我找到了this解决方案,但它似乎仅适用于C ++。
我正在.NET Framework中编写WPF应用,并希望检查Windows 10计算机的安全模式状态。
编辑:我打算在安全模式下手动运行该程序,它会检测到该程序处于安全模式,因此请打开恢复菜单,而不是正常程序。
答案 0 :(得分:1)
从根本上讲,这是Windows API的问题,因此解决方案在所有语言中都是相同的:调用GetSystemMetrics
API函数,请求SM_CLEANBOOT
度量。这将返回一个整数值,指示系统如何启动。特别是:
那么,唯一的挑战是如何从托管代码中调用此函数。 .NET Framework和C#语言允许您P /调用本机函数。为此,您需要提供要调用的本机函数的声明,还需要定义一些类型(枚举等)。示例代码:
internal const int SM_CLEANBOOT = 67;
[DllImport("user32.dll")]
internal static extern int GetSystemMetrics(int smIndex);
pinvoke.net上提供了更完整的代码示例,包括所有系统指标的完整枚举类型。
请注意,评论中提到的Steve和Rand Random是正确的。在安全模式下,您的应用程序不会自动启动-并且您不希望它启动。仅当您实际上要改变行为时,才需要在应用程序启动时手动执行此检测。
不要假定用户以安全模式启动意味着他们要在您的程序中进入恢复模式。系统问题和应用程序问题是完全独立的。您应该只提供一种进入恢复模式的方法,作为应用程序的一部分-也许是命令行开关。不要针对局部问题使用全局解决方案。