1

Я попробовал этот test.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\audio\shell\ChunkAudio]@="chunk audio (5 min)""Icon"="%SystemRoot%\\System32\\shell32.dll,186"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\audio\shell\ChunkAudio\Command]@="%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe C:\Users\Me\Desktop\5min_chunk_audio.ps1 %1"

Он добавляет контекстное меню к аудиофайлам, как и ожидалось, но выдает ошибку, когда я нажимаю на него:

Windows не может получить доступ к указанному устройству, пути или файлу. У вас могут не быть соответствующих разрешений для доступа к элементу.

Это может быть из-за того, что test.reg ничего не добавляет в поле "Данные" в .... shell\ChunkAudio\Command в реестре. (Я попытался вручную добавить %SystemRoot%\system32\... C:\...audio.ps1 %1)

Я также попробовал:

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\audio\shell\ChunkAudio\Command]
@="CMD.EXE /C Powershell.exe -File C:\\Users\\Me\Desktop\\petit_program\\PowerShell\\PowerShell_script\\5min_chunk_audio.ps1 %1"

2 ответа2

1

Попробуйте сформулировать команду так:

@="CMD.EXE /C Powershell.exe -File C:\\Users\\Me\\Desktop\\5min_chunk_audio.ps1 %1"
0

Чтобы завершить ответ Гарримка:

Windows Registry Editor Version 5.00

; set the name + icon in the context menu
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\audio\shell\ChunkAudio]
@="chunk audio"
"Icon"="%SystemRoot%\\System32\\shell32.dll,117"

; run the script
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\audio\shell\ChunkAudio\Command]
    @="CMD.EXE /K Powershell.exe -File C:\\Users\\Me\\Desktop\\5min_chunk_audio.ps1 \"%1\""

● CMD.EXE /C Выполняет команду, указанную в строке, а затем завершается

CMD.EXE /K Выполняет команду, указанную в строке, но остается (хорошо для отладки)

введите cmd /? в окнах cmd, чтобы найти больше аргументов.

%1 - первый аргумент (% 2 - второй ...). % 1 содержит путь к файлу. Нам нужно заключить в кавычки арг, чтобы использовать его (иначе путь будет обрезан в первом месте). Но "%1" не будет работать, потому что нам нужно экранировать кавычку, поэтому мы пишем \"%1\" .


Бонус: чтобы получить arg (путь) в вашем скрипте, просто используйте $arg (это "Автоматические переменные"). Чтобы узнать больше, запустите: Get-Help about_Automatic_Variables)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .