【问题标题】:How to set C# Console Application to use default console settings (Windows Server 2012)?如何设置 C# 控制台应用程序以使用默认控制台设置(Windows Server 2012)?
【发布时间】:2018-03-13 18:11:40
【问题描述】:

使用 C#/Visual Studio 2017 创建了一个控制台应用程序。当我从 VS 或 Windows 10 机器上运行控制台应用程序时,它使用我的控制台应用程序的默认设置(选项/字体/布局/颜色),这是完美的.但是,当我尝试在使用 Windows Server 2012 R2 的测试服务器上运行它时,它使用随机设置(小缓冲区大小/大字体/奇形窗口)。我试过了:

  • 将服务器 (2012) 上的默认值设置为本地 (Windows 10/VS) 上的相同默认值
  • 以编程方式设置控制台窗口的功能
  • 从命令行运行

当我从命令行(program.exe)运行应用程序时,它使用默认设置。但是当我点击可执行文件时它没有。我在这里错过了什么?

【问题讨论】:

  • 操作系统通过用户帐户和应用程序名称记住控制台设置。 Cmd.exe 和 yourapp.exe 不一样。您可以使用 Regedit.exe、HCKU/Console 键查看这些设置。 Superuser.com 是提问的好地方。
  • 太棒了!没有意识到用户和应用程序控制台窗口位于不同的设置中。找到条目并设置应用程序的默认值。他们非常不同。谢谢!
  • 它不是基于应用程序名称,而是基于初始控制台窗口标题。如果在调用CreateProcess 时没有通过STARTUPINFO 设置窗口标题(例如使用CMD 的start 命令时),则初始窗口标题为应用程序路径。此外,如果控制台应用程序通过 .lnk 快捷方式启动,设置将从快捷方式加载并保存到快捷方式而不是注册表。

标签: c# windows visual-studio-2017 console-application windows-server


【解决方案1】:

显然,控制台有两种不同的设置。一个用于用户帐户,另一个用于初始控制台窗口标题(在本例中是我的应用程序)。我能够查看 Regedit.exe、HCKU/Console 键中的设置并删除我的初始控制台窗口标题的设置,然后运行应用程序(以管理员身份)并在那里更改默认设置。谢谢你们的cmets!

【讨论】:

  • 控制台初始化首先应用默认设置(“HKCU\Console”)。窗口标题设置 ("HKCU\Console[Window Title]") 会覆盖默认值。可以通过 GUI 中的“默认”和“属性”对话框分别设置默认和窗口标题设置,而不是使用注册表。
  • 当您使用 .lnk 快捷方式启动应用程序时,.lnk 文件的路径将作为窗口标题传递(即 STARTF_TITLEISLINKNAME 在来自GetStartupInfo 的启动信息中标记)。控制台 API 反过来使用 .lnk 文件进行窗口标题设置,“属性”对话框修改快捷方式。
猜你喜欢
  • 2010-09-11
  • 1970-01-01
  • 1970-01-01
  • 2014-09-09
  • 2012-11-02
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
相关资源
最近更新 更多