这不是一个真正的编程问题,但我正在尝试在Windows 7的“开始”菜单中设置文件夹结构。此文件夹结构中有几个文件夹,其中包含指向应用程序的快捷方式。计算机。
我不希望计算机上的用户能够弄乱该文件夹结构。现在,他们可以从开始菜单中移动,复制或删除它。
我找到了锁定整个“开始”菜单的注册表编辑,但我只想控制特定文件夹。
谢谢!
答案 0 :(得分:0)
如果您的用户不是此计算机上的管理员,则只需在C:\ProgramData\Microsoft\Windows\Start Menu
而不是%appdata%\Microsoft\Windows\Start Menu
下创建该文件夹即可。然后只有管理员可以编辑它。
如果这是一个许多用户获得管理员权限的环境,那么事情就会变得棘手。您已对ntfs security settings进行了修改并使用了正确的结构类型或使用了符号链接。
问题在于并行放置文件夹,其中一个是可编辑的,一个不是。这是因为删除权限是从父项继承的。因此,要使其仅使用ntfs权限,您必须从父级删除所有权限(包括继承),然后将所有文件夹,但不可删除的文件夹更深层次地提供给他们的权限。如果您拥有多个文件夹,那么这是有问题的,因为这是很多工作。
因此,我发现这项工作的唯一技巧是在不同的地方创建文件夹,然后将其链接起来。您将创建一些文件夹C:\ MyIndestructibleFolders \ MyFolder,然后删除MyFolder上的所有权限。
请记住,如果您创建了一个文件夹,它可能会从父母那里继承许多权限,覆盖您设置的内容。避免这种情况的最佳方法是进入"高级"安全菜单并清除类似"包括来自此对象的父母"的可继承权限的框。如果要求更换或移除,请说删除。然后为您的管理员创建一个条目"完全访问"和#34;域用户"或"用户"使用默认的读取设置。我也把它设置为" readonly"在gui,但这只影响孩子,所以可能没有必要。
现在您创建一个符号链接,以便在开始菜单中看到此文件夹。打开cmd并键入
mklink /D "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Folder" C:\MyIndestructibleFolders\MyFolder
现在转到资源管理器中的联结并删除所有权限。这次只需为管理员添加完全访问权限,无需任何用户权限。 它现在应该在开始菜单中可见但是不可删除/可移动
如果必须以编程方式在多台计算机上执行此操作,最好查看icacls。
需要注意的一点是,用户似乎仍然可以将项目拖放到开始菜单中的该文件夹中。这不是真的。如果这样做会发生在用户AppData文件夹中创建具有相同名称的第二个文件夹,文件移动到那里并同时显示两个文件夹的内容。
从技术上讲,这是最好的方法,但它非常复杂。你还可以考虑另外一种更多的hacky方式。无法移动或删除writelock中的文件。你可以创建一个文件" ~Anchor"并使其在文件夹根目录中不可见。然后你可以使用powershell来写它
$file = [System.io.File]::Open('C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Myfolder\~Anchor', 'Open', 'Read', 'None')
因为带有〜的名称,这将是Windows尝试移动/删除的第一件事,因此它会阻止操作。如果您将powershell脚本放在Startup文件夹中,或者创建一个已启用的任务,在启动时将使用系统权限访问它,它也应该阻止删除。