快速而肮脏

快速而肮脏

是否可以从 Powershell 关闭应用程序执行别名?

我理想中寻找的是这样的命令:

PS> Disable-AppExecutionAlias python

目前,我能找到的唯一方法是进入“开始”菜单并搜索“管理应用程序执行别名”,然后手动禁用它们。我希望能够以编程方式执行此操作。

在此处输入图片描述

语境:我正在编写一个脚本来设置相对简单的工作站并尝试消除所有手动步骤。

编辑:

我知道Set-AliasRemove-Alias,但这些是 PowerShell 别名,而不是如上图所示的应用程序执行别名。

答案1

快速而肮脏

以下是我取得的进展:

Remove-Item $env:LOCALAPPDATA\Microsoft\WindowsApps\python.exe
Remove-Item $env:LOCALAPPDATA\Microsoft\WindowsApps\python3.exe

这就是您可以摆脱示例中的程序的方法。当您在控制面板中禁用并重新启用相应条目时,它将被重新创建。因此,这里造成的损害很小,您可以得到想要的东西。

找到这个问题的正确解决方案并了解这里发生了什么需要更多时间进行研究。但在 Windows 中做这种事情不是我的日常工作也不是我的专业领域,Linux 更符合我的兴趣。

为使用 winget 安装的应用程序手动创建别名

真正让我开始研究这个问题的原因是,像通过 winget 安装的程序jq不会出现在路径上,因此无法找到。这与你的要求正好相反。所以我在文件系统、注册表和在线搜索中进行了一番搜索。

目前jq我在 PowerShell 中执行以下操作:

# Reg2CI (c) 2022 by Roger Zander
if((Test-Path -LiteralPath "HKCU:\Software\Microsoft\Windows\CurrentVersion\App Paths\jq.exe") -ne $true) {
  New-Item "HKCU:\Software\Microsoft\Windows\CurrentVersion\App Paths\jq.exe" -force -ea SilentlyContinue 
};
New-ItemProperty -LiteralPath 'HKCU:\Software\Microsoft\Windows\CurrentVersion\App Paths\jq.exe' 
  -Name '(default)' -Value "$env:LOCALAPPDATA\Microsoft\WinGet\Packages\stedolan.jq_Microsoft.Winget.Source_8wekyb3d8bbwe\jq-win64.exe" 
  -PropertyType String -Force -ea SilentlyContinue;
New-ItemProperty -LiteralPath 'HKCU:\Software\Microsoft\Windows\CurrentVersion\App Paths\jq.exe' 
  -Name 'Path' -Value "$env:LOCALAPPDATA\Microsoft\WinGet\Packages\stedolan.jq_Microsoft.Winget.Source_8wekyb3d8bbwe" 
  -PropertyType String -Force -ea SilentlyContinue;

抱歉,代码太长了,显然只有极少数使用 Windows 的人关心代码的可读性和行长。

超薄平板

这似乎与超薄平板。 这里有一个流行的例子, 这是Stackoverflow 上的另一个问题

抱歉,我本来想对此进行更多的写作和研究,但我在这里完全偏离了主题。

相关内容