众所周知,Win7系统默认账户对C:\Windows下的权限很低,在该目录下右击菜单后只出现一个“新建文件夹”。现在我想编写一个程序实现将某个指定文件夹的所有者设置为Adminitrators,然后再对其设置权限。权限设置的代码已没有任何问题,但是始终不能设置文件和文件夹的所有者。
我写的代码如下:// 设置指定文件夹的所有者 实际调用时Dir="C:\\Windows\\System32", Owner="Administrators" 或者"BUILTIN\\Administrators" public void SetOwner(string Dir, string Owner)
{
DirectoryInfo topDir = new DirectoryInfo(Dir);
DirectorySecurity dirSec = topDir.GetAccessControl();
IdentityReference idenRef = new NTAccount(Owner);
dirSec.SetOwner(idenRef);
Directory.SetAccessControl(Dir, dirSec); // 在Win7下测试时,由于默认的所有者为TrustedInstaller,所以执行该条语句时报错:无权设置权限 }
大家帮我看看这段代码应该如何编写才对。
我写的代码如下:// 设置指定文件夹的所有者 实际调用时Dir="C:\\Windows\\System32", Owner="Administrators" 或者"BUILTIN\\Administrators" public void SetOwner(string Dir, string Owner)
{
DirectoryInfo topDir = new DirectoryInfo(Dir);
DirectorySecurity dirSec = topDir.GetAccessControl();
IdentityReference idenRef = new NTAccount(Owner);
dirSec.SetOwner(idenRef);
Directory.SetAccessControl(Dir, dirSec); // 在Win7下测试时,由于默认的所有者为TrustedInstaller,所以执行该条语句时报错:无权设置权限 }
大家帮我看看这段代码应该如何编写才对。
c# 更改文件访问权限 所有者(适用于win7以下版本)
http://mars968.blog.163.com/blog/static/740003320104184457916/
ManagementPath SharePath = new ManagementPath("\\\\kid-wang\\root\\cimv2:Win32_Share");
ObjectGetOptions ogo = new ObjectGetOptions(null, new TimeSpan(500), true);
ManagementClass _processClass = new ManagementClass(SharePath,ogo);
Directory.CreateDirectory("c:\\Z_Share\\");
if (Directory.Exists("c:\\Z_Share\\"))
{
object[] sharea = { "C:\\Z_Share", "Z_Share", 0, 5, "1", "1" };
object result = _processClass.InvokeMethod("Create", sharea);
}