使用“运行”和固定图标执行的 Powershell 具有不同的设置是如何发生的?

gri*_*yvp 6 powershell

在我的 Windows 7 上,如果我通过“Win+R”运行 powershell,“powershell”将以黑色背景上的白色文本开头,并且设置会通过[HKEY_CURRENT_USER\Colors]. 例如,我可以轻松地将默认的“红色”颜色更改为不那么亮:

在此处输入图片说明

但是,如果我将此 powershell 固定到 Windows 7 超级栏并通过单击超级栏图标启动它,它将显示一些我无法更改的疯狂蓝白颜色 O_O:

在此处输入图片说明

为什么会有这种差异,是否有任何方式可以配置固定 powershell 的颜色,我可以配置通过“运行”命令启动的 powrshell。

Jay*_*uzi 17

TL; 博士

  1. 运行powershell.exe
  2. ALT- SPACE->Properties
  3. 根据需要更改设置。
  4. OK

powershell.exe 是一个控制台程序。当控制台程序运行时,Windows 通过查看一堆位置来配置控制台。

首先,它查看您启动的快捷方式(.LNK 文件)。这就是您通常会在开始菜单、桌面和任务栏中看到的内容。如果您单击快捷方式并选择属性,您将在那里看到一堆这些选项。

对于快捷方式中未指定的任何选项(或者如果您直接启动 .EXE,没有快捷方式),Windows 将在注册表中查找。

我找不到所涉及的注册表项的完整列表,但以下是我所知道的:

HKEY_CURRENT_USER\Console
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor
Run Code Online (Sandbox Code Playgroud)

但是等等,还有更多!

当您在控制台窗口上打开系统菜单时,您会看到“属性”和“默认值”。

默认值修改上述注册表项之一。

这些属性适用于当前打开的控制台窗口和启动它的快捷方式。如果您因为直接打开 .EXE 而没有使用快捷方式,则它会转到一个特殊的注册表项,例如:

HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe
Run Code Online (Sandbox Code Playgroud)

但这还不是全部!

控制台程序可以修改自己的颜色。例如,在 CMD 中,您可以执行以下操作:

C:\>color f0
Run Code Online (Sandbox Code Playgroud)

在 PowerShell 中:

PS> $Host.UI.RawUI.BackgroundColor = 7
Run Code Online (Sandbox Code Playgroud)

这些设置不会以任何方式保留。