【发布时间】:2015-07-24 21:24:01
【问题描述】:
所以,我的问题如下:我正在尝试使用 VB 代码替换 https://github.com/PFCKrutonium/Windows-10-Login-Background-Changer 中批处理文件(Takeown.gib(gib 因为 VS 让我更容易提取它)的使用)。基本上我需要获得目录和所有包含文件的所有权,以及设置权限,以便每个人或只是管理员都可以编辑目录和包含文件。
此时我正在查看的代码是:
Dim User As String = System.Security.Principal.WindowsIdentity.GetCurrent.Name
Dim FolderInfo As IO.DirectoryInfo = New IO.DirectoryInfo(SysResources)
Dim FolderAcl As New DirectorySecurity
FolderAcl.AddAccessRule(New FileSystemAccessRule(User, FileSystemRights.FullControl, AccessControlType.Allow, PropagationFlags.InheritOnly, AccessControlType.Allow))
FolderInfo.SetAccessControl(FolderAcl)
这似乎不是特别有效,因为它只完成了一半的工作,而且老实说它甚至无法做到这一点。
感谢您能给我的任何见解/帮助!
【问题讨论】:
-
Kruto 会很棘手,您需要先在令牌/会话中启用“SeTakeOwnershipPrivilege”,然后才能获得所有权。获得权限后,您可以从 VB 分配所有权,最后您就可以在 ACL 上添加权限。在此处查找 C#/Powershell 权限提升示例。您可能可以将 C# 转换为 VB(或不转换)stackoverflow.com/a/26645034/3093031
-
如果我错了,请纠正我,以管理员身份运行不这样做吗?
-
不不不。它不能那样工作(表面上是为了您的安全)以管理员身份打开 CMD 并键入“whoami /priv”以验证它已被禁用。
-
那么像 takeown / icacls 这样的工具是如何工作的呢?你能建议我改进批处理文件的方法吗?
-
你看到链接里的大200行函数了吗。我怀疑 takeown 工具有一个内置的功能来增加你的权限,非常相似,在幕后工作。一个临时增加您的特权,直到它完成它的任务。如果您想放弃 takeown.exe,则需要复制该权限升级。
标签: vb.net file visual-studio-2013 directory