找回密码
 新建账号

以另外一个用户或管理员的身份运行 Windows Terminal

[复制链接]
php 发表于 2024/10/23 11:22 | 显示全部楼层 |阅读模式
Windows Terminal 是个好东西,它让命令行窗口也可以分标签打开不同的窗口。
Windows Terminal 有两个可执行文件。
  1. WindowsTerminal.exe
  2. wt.exe
复制代码
其中 WindowsTerminal.exe 是可视化窗口,即有 GUI 界面的可执行应用程序,wt.exe 命令行程序。
如果手动在资源管理器里面双击运行,这两个应用程序都可以打开一个新的 Windows Terminal 窗口或标签。
如果使用命令行以另外一个用户或管理员的身份运行 Windows Terminal,直接尝试运行 WindowsTerminal.exe 或 wt.exe 会因为权限问题而失败。
  1. Start-Process -FilePath "C:\Program Files\WindowsApps\Microsoft.WindowsTerminal_1.20.11781.0_x64__8wekyb3d8bbwe\WindowsTerminal.exe" -Verb RunAs
复制代码
  1. Line |
  2.    1 |  Start-Process -FilePath "C:\Program Files\WindowsApps\Microsoft.Windo …
  3.      |  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  4.      | This command cannot be run due to the error: An error occurred trying to start process 'C:\Program
  5.      | Files\WindowsApps\Microsoft.WindowsTerminal_1.20.11781.0_x64__8wekyb3d8bbwe\WindowsTerminal.exe' with working directory
  6.      | 'C:\Users\WUXIANCHENG\Downloads'. 拒绝访问。
复制代码
  1. Start-Process -FilePath "C:\Program Files\WindowsApps\Microsoft.WindowsTerminal_1.20.11781.0_x64__8wekyb3d8bbwe\WindowsTerminal.exe" -Credential WUXIANCHENG
复制代码
  1. PowerShell credential request
  2. Enter your credentials.
  3. Password for user WUXIANCHENG: ***********

  4. Line |
  5.    1 |  Start-Process -FilePath "C:\Program Files\WindowsApps\Microsoft.Windo …
  6.      |  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  7.      | This command cannot be run due to the error: 拒绝访问。
复制代码
Windows Terminal 是一个应用商店应用,相同设备上的不同用户可以安装或不安装某个应用,不同的用户也可以安装相同应用的不同版本。
想要使用 Start-Process 以另外一个用户或管理员身份启动 Windows Terminal,需要以这个目标用户的身份运行 Start-Process,先使用 Get-AppxPackage 查询目标用户安装的 Windows Terminal 所在目录的路径。
Get-AppxPackage 可以使用 -User 指定用户名来查询对应用户所安装的应用的信息,也可以使用 -AllUsers 参数来查询所有用户的应用安装信息,这两个参数都不指定时查询当前用户,如果查询当前用户以外的用户安装的应用需要有管理员权限。
  1. Get-AppxPackage -Name Microsoft.WindowsTerminal -User WUXIANCHENG | Select-Object -ExpandProperty InstallLocation
复制代码
以下是一个使用 Powershell 以管理员身份打开另外一个 Windows Terminal 窗口的代码示例
  1. Start-Process -FilePath (Get-Process -Id $PID).Path -Verb RunAs -ArgumentList @(
  2.     "-Command",
  3.     'Get-AppxPackage -Name Microsoft.WindowsTerminal | ForEach-Object {Start-Process -FilePath (Join-Path -Path $_.InstallLocation -ChildPath wt.exe)}'
  4. )
复制代码
-Verb RunAs 表示以管事员身份运行程序,使用 -Credential 可以指定需要的用户,可执行文件只能使用 wt.exe,不可以使用 WindowsTerminal.exe。
一般来说,使用以下路径也可以启动 Windows Terminal,但它并不是一个真正的 wt.exe 可执行文件。
  1. C:\Users\<用户名>\AppData\Local\Microsoft\WindowsApps\wt.exe
复制代码
使用以下命令可以查询到以上 wt.exe 的路径
  1. Get-Command -Name wt.exe | Select-Object -ExpandProperty Path
复制代码
wt.exe 接受命令行参数,具体可以参考 Windows Terminal 官方文档

手机版|轻松E站

GMT+8, 2024/12/21 23:49

快速回复 返回顶部 返回列表