1

I did try this 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"

It adds a context menu on the audio files as expected, but it sends an error when I click on it:

Windows cannot access the specified device, path, or file. You may not have the appropriate permissions to access the item.

It might be because the test.reg doesn't add anything to the field "Data" in ....shell\ChunkAudio\Command in the registry. (I tried to manualy add the %SystemRoot%\system32\... C:\...audio.ps1 %1)

I also tried:

[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 Answers 2

1

Try to formulate the command like this:

@="CMD.EXE /C Powershell.exe -File C:\\Users\\Me\\Desktop\\5min_chunk_audio.ps1 %1"
5
  • It works, but it's weird that to run the powershell you need first to run the cmd to launch it (if i understand your code correctly)
    – J. Does
    Dec 27, 2018 at 14:55
  • And is there a way to run it silently on the background? (Without the cmd windows?)
    – J. Does
    Dec 27, 2018 at 14:56
  • 1
    You may try it without CMD and it might even work. But with CMD you can also use this answer.
    – harrymc
    Dec 27, 2018 at 15:03
  • if you get an error Cannot process argument because the value of argument "name" is not valid. Change the value of the "name" etc. it's because of the space isinde the selected file name.
    – J. Does
    Dec 27, 2018 at 20:54
  • by the way it also works without the CMD.EXE /C (and re-by the way: use /k instead if you want the cmd windows to stay open)
    – J. Does
    Dec 28, 2018 at 8:43
0

To complete harrymc's answer:

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 Carries out the command specified by string and then terminates

CMD.EXE /K Carries out the command specified by string but remains (good to debug)

type cmd /? in a cmd windows to find more args.

%1 is the first argument (%2 the second...). %1 contains the path of the file. We need to quote the arg to use it (otherwhise the path will be cut at the first space). But "%1" won't work because we need to escape the quote, so we write \"%1\".


Bonus: To get the arg (the path) on your script simply use $arg (it's an "Automatic Variables". To know more run: Get-Help about_Automatic_Variables)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .