If your users are not administrators on this machine you can just create the folder under C:\ProgramData\Microsoft\Windows\Start Menu
instead of %appdata%\Microsoft\Windows\Start Menu
. Then only admins can edit it.
If this is an environment where many users got admin rights things get tricks. You have tomodify the ntfs security settings and use the correct type of structure or use a symbolic link.
The problem is having folders in parallel where one is editable and one is not. This is because rights as delete are inherited from the parent. So to make it work with just ntfs rights you have to remove all rights from the parent (including inheritance) and then give all folders but the undeletable ones their rights back on a deeper level. This is problematic if there are many folders in parallel to you own one because it is a lot of work.
So the only trick to make this work that I found was creating the folder at a different place and then linking it. You would create some folder C:\MyIndestructibleFolders\MyFolder and then remove all permissions on MyFolder.
Keep in mind, that if you create a folder it might inherit a lot of permissions from it's parents overwriting things you set. The best way to avoid this is going to the "Advanced" menu of security and clear the box that says something like "Include inheritable permissions from this object's parent" If it asks for replace or remove, say remove. Then create one entry for your Admin with "Full Access" and one for "Domain Users" or "Users" with the default read settings. I also set it to "readonly" in the gui but this affects only children so might not be necessary.
Now you create a symbolic link so that this folder is seen in the start menu. Open the cmd and type
mklink /D "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Folder" C:\MyIndestructibleFolders\MyFolder
Now go to the junction in explorer and also remove all permissions. Just add full access for the administrator this time, no need for any user rights.
It should now be visible in the start menu but be undeletable/-moveable
If you have to do this on several computers programmatically it might be a good idea to look into icacls.
One thing to note is that it will seem that users are still able to drag and drop items into that folder in the start menu. This is not true. What happens if you do that is that a second folder with the same name is created in the users AppData folder, the file is moved there and the contents of both folders are displayed simultaneously.
This is imo technically the best way to do it, but it's quite complicated. There is another a lot more hacky way which you can also consider. Files that are in writelock can not be moved or deleted. You can create a file "~Anchor" and make it invisible inside your folder root. Then you can use powershell to writelock it
$file = [System.io.File]::Open('C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Myfolder\~Anchor', 'Open', 'Read', 'None')
because of the name with the ~ this will be the first thing windows tries to move/delete so it will prevent the operation. If you put your powershell script in the Startup folder or create a sheduled task that upon boot will access this with system rights it should prevent deletion as well.