Попробуй из программы на c# запускать питон скрипт, с ним всё должно работать
import os
import winshell
import inspect
from getpass import getuser
from win32com.client import Dispatch
filename = inspect.getframeinfo(inspect.currentframe()).filename
user = getuser()
wDir = os.path.dirname(os.path.abspath(filename))
target = wDir + r'\program_name.exe'
path = rf'C:\Users\{user}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\program_name.lnk'
icon = wDir + r'\icon_name.ico'
shell = Dispatch('WScript.Shell')
shortcut = shell.CreateShortCut(path)
shortcut.Targetpath = target
shortcut.WorkingDirectory = wDir
shortcut.IconLocation = icon
shortcut.save()