Скрипт PowerShell (.ps1) запускается в новом окне Topic is solved

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
Post Reply
emusic
Posts: 51
Joined: Tue 26 Nov, 2013 06:39
Location: Новосибирск
Has thanked: 1 time
Been thanked: 1 time

Скрипт PowerShell (.ps1) запускается в новом окне

Post by emusic »

FAR 3, работающий в Win7 под моей основной учеткой, почему-то запускает скрипты .ps1 в новом окне. От способа запуска не зависит - хоть по Enter, хоть по комстроке .\file.ps1. Но под другими учетками, в том числе вновь создаваемыми, запускает, как и положено, в своей консоли. cmd.exe под любой учеткой тоже запускает .ps1 в своей консоли.

В File Associations этого профиля FAR есть только .mak.

FAR 5665, чуть раньше был 5577.

Грешу на то, что когда-то воспользовался виндовым "Open with..." для типа ps1. Но та ассоциация давным-давно удалена, ее нет ни в таблице Default programs, ни в соответствующих разделах реестра. В HKCU моей учетки вообще нет никаких локальных настроек для PowerShell.

Какие еще настройки, кроме File Associations, FAR использует для выбора режима запуска файла по расширению?
User avatar
DrKnS
Posts: 6040
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 11 times
Been thanked: 401 times

Скрипт PowerShell (.ps1) запускается в новом окне

Post by DrKnS »

emusic wrote: Tue 03 Nov, 2020 12:21 Какие еще настройки, кроме File Associations, FAR использует для выбора режима запуска файла по расширению?
О, там магия.
Но если очень упрощенно, то сначала ищется ассоциированный тип в HKCR\.ps1\(Default) или HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ps1.
Например, Microsoft.PowerShellScript.1.
Потом в HKCR\Microsoft.PowerShellScript.1\shell\(Default) ищется его Action.
Например, Open.
Потом в HKCR\Microsoft.PowerShellScript.1\Shell\Open\Command\(Default) ищется ассоциированное приложение.
Потом это приложение ищется на диске и обнюхивается. Если оно консольное, то открывается в том же окне.
В противном случае, а также если любой из шагов выше не удался - в отдельном.

Кстати, у меня ps1 вообще открывается в notepad, в Win7 и 10. И, вроде бы, так было всегда.

Я там нашел и поправил в 5697 пару мелких багов, которые косвенно могли влиять (а могли и не влиять).
emusic
Posts: 51
Joined: Tue 26 Nov, 2013 06:39
Location: Новосибирск
Has thanked: 1 time
Been thanked: 1 time

Скрипт PowerShell (.ps1) запускается в новом окне

Post by emusic »

DrKnS wrote: Tue 03 Nov, 2020 17:09 ищется ассоциированный тип в HKCR\.ps1\(Default) или HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ps1
О, спасибо! Как раз в FileExts и обнаружился .ps1, которого нет в других учетках. Я туда даже не смотрел (искал "powershell" только в именах ключей). После удаления FAR заработал, как надо.

Что интересно, в этом .ps1 я не вижу ничего крамольного:

\OpenWithList
"a"="powershell.exe"
"MRUList"="a"

\OpenWithProgids
"Microsoft.PowerShellScript.1"=hex(0):

\UserChoice
"Progid"="Applications\\powershell.exe"

Такое впечатление, что FAR косячит с обнюхиванием файла.
User avatar
DrKnS
Posts: 6040
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 11 times
Been thanked: 401 times

Скрипт PowerShell (.ps1) запускается в новом окне

Post by DrKnS »

emusic wrote: Tue 03 Nov, 2020 17:58 в этом .ps1 я не вижу ничего крамольного
Я тоже ничего такого не вижу.
Однако, far лезет в этот ключ лично только в ОС < Vista, в новых ОС используется IApplicationAssociationRegistration::QueryCurrentDefault. Как именно оно работает и почему ему этот ключ сносит крышу, знают только в Microsoft.
У вас в HKCR\Applications\powershell.exe что-то есть?
emusic
Posts: 51
Joined: Tue 26 Nov, 2013 06:39
Location: Новосибирск
Has thanked: 1 time
Been thanked: 1 time

Скрипт PowerShell (.ps1) запускается в новом окне

Post by emusic »

DrKnS wrote: Tue 03 Nov, 2020 19:55 У вас в HKCR\Applications\powershell.exe что-то есть?
В Applications вообще нет powershell.exe.
Post Reply

Return to “Нужна помощь”