Если ваши пользователи не являются администраторами этой машины, вы можете просто создать папку под C:\ProgramData\Microsoft\Windows\Start Menu
вместо %appdata%\Microsoft\Windows\Start Menu
. Тогда только администраторы могут его редактировать.
Если это среда, в которой многие пользователи получили права администратора, все становится хитроумным. У вас есть tomodify ntfs security settings и используйте правильный тип структуры или используйте символическую ссылку.
Проблема связана с параллельными папками, где один можно редактировать, а другой нет. Это связано с тем, что права как delete наследуются от родителя. Поэтому, чтобы заставить его работать с правами только ntfs, вам необходимо удалить все права от родителя (включая наследование), а затем вернуть все папки, но неуязвимые, их права на более глубокий уровень. Это проблематично, если есть много папок параллельно с вашим собственным, потому что это большая работа.
Итак, единственный трюк, который я нашел, это создать папку в другом месте, а затем связать ее. Вы должны создать папку C: \ MyIndestructibleFolders \ MyFolder, а затем удалить все разрешения для MyFolder.
Имейте в виду, что если вы создадите папку, она может наследовать множество прав от своих родителей, перезаписывающих вещи, которые вы установили. Лучший способ избежать этого - перейти в «Расширенное» меню безопасности и снять флажок с надписью «Включить наследуемые разрешения от родителя этого объекта». Если он просит заменить или удалить, скажем, удалить. Затем создайте одну запись для своего администратора с «Полный доступ» и одну для «Пользователи домена» или «Пользователи» с настройками чтения по умолчанию. Я также установил его «readonly» в gui, но это затрагивает только детей, поэтому может и не понадобиться.
Теперь вы создаете символическую ссылку, чтобы эта папка отображалась в меню «Пуск». Откройте cmd и введите
mklink /D "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Folder" C:\MyIndestructibleFolders\MyFolder
Теперь перейдите на узел в проводнике и удалите все разрешения. Просто добавьте полный доступ для администратора на этот раз, не нужно никаких прав пользователя. Теперь он должен быть виден в меню «Пуск», но может быть отменен/-moveable
Если вам нужно сделать это на нескольких компьютерах программно, это может быть хорошей идеей для изучения icacls.
Следует отметить, что пользователи могут по-прежнему перетаскивать элементы в эту папку в меню «Пуск». Это неправда. Что произойдет, если вы сделаете это, так как вторая папка с тем же именем создается в папке AppData пользователей, файл перемещается туда, и содержимое обеих папок отображается одновременно.
Это технически лучший способ сделать это, но это довольно сложно. Существует еще один более хакерский способ, который вы также можете рассмотреть. Файлы, которые находятся в записи, не могут быть перемещены или удалены.Вы можете создать файл «~ Anchor» и сделать его невидимым внутри корня вашей папки. Затем вы можете использовать PowerShell для его
блокировки записи
$file = [System.io.File]::Open('C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Myfolder\~Anchor', 'Open', 'Read', 'None')
из имени с ~ это будет первое, что окна пытается переместить/удалить так что это будет препятствовать работе. Если вы поместите свой сценарий powershell в папку «Автозагрузка» или создадите задачу, которую вы выполняете при загрузке с правами системы, она также должна предотвратить удаление.
Похоже, вы пишете в меню «Пуск» пользователя, а не в меню «Пуск» компьютера. –