.url-файлы обрабатываются через тип InternetShortcut, но Shell не использует ветку InternetShortcut\shell, а вместо этого — ветку ShellEx\ContextMenuHandlers, в отличие от файлов .txt, .png и т.п.
Поэтому добавление через shell\NewItem не сработает для .url ярлыков.
Используй:
import winreg as reg
base_path = r"SOFTWARE\Classes\SystemFileAssociations\.url\shell\NewItem"
with reg.CreateKey(reg.HKEY_CURRENT_USER, base_path) as main_key:
reg.SetValueEx(main_key, 'MUIVerb', 0, reg.REG_SZ, 'New Item for .url')
with reg.CreateKey(main_key, 'command') as cmd_key:
reg.SetValue(cmd_key, '', reg.REG_SZ, r'"C:\Path\To\app.exe" "%1"')