确定.Net Core控制台应用程序是否以用户交互模式运行

2023-11-26

是否可以确定 .Net Core 控制台应用程序是否以用户交互模式运行?

在.Net 的早期版本中可以进行测试Environment.UserInteractive查看用户是否有权访问该应用程序。这在.Net core中似乎不存在。


.NET Core 比经典 .NET Framework 面临的更多问题是如何定义“用户交互”。即使在“经典”.NET 上,Environment.UserInteractive感觉很hacky,因为它依赖于系统API调用来查询用户对象标志以及对标志的测试描述为Window station has visible display surfaces。目前尚不清楚这在用于运行命令的无 GUI Windows Nano 服务器上到底意味着什么。

我的建议是确定您想要测试的确切用例。例如,您可以测试附加的输入和输出流是否使用重定向Console.IsOutputRedirected and Console. IsInputRedirected。在非 Windows 系统上,调用isatty()可以制作,但目前不能作为 .NET API 使用(您必须编写 PInvoke 代码)。如果您想确定是否作为 Windows 服务运行,TopShelf检查进程是否已由服务主机启动。另一种方法是为特定用例添加额外的参数 - 例如添加并检查--noninteractive当您想从脚本运行工具时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

确定.Net Core控制台应用程序是否以用户交互模式运行 的相关文章

随机推荐