0

我的目标是在用户配置文件目录中创建一个名为“Logs”的目录:让我们称之为 - C:\Users\UserX。当我以 UserX 身份登录时,也被列为当前机器的管理员,目录:C:\Users\UserX\Logs 创建成功。但是,当我以 UserY 或任何其他非 UserX 且未列为机器管理员的用户身份登录时,在创建上述目录 (C:\Users\UserY\Logs) 时会出现权限异常可以在路径 C:\Users\UserY\Logs 中创建一个名为“Logs”的目录,当 UserY 不是机器的管理员时,如果是这样,我如何通过代码 (C#) 实现它?我当前的代码如下所示:

        var rootFolder = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);

        var logsFolder = Path.Combine(rootFolder, "Logs");
        if (!Directory.Exists(logsFolder))
        {
            var dirSec = new DirectorySecurity(rootFolder, AccessControlSections.All);
            var procInfo = Process.GetCurrentProcess().StartInfo;
            var domainName = string.IsNullOrEmpty(procInfo.Domain) ? Environment.UserDomainName : procInfo.Domain;
            var userName = string.IsNullOrEmpty(procInfo.UserName) ? Environment.UserName : procInfo.UserName;
            userName = string.Format("{0}\\{1}", domainName, userName);
            dirSec.SetAccessRule(new FileSystemAccessRule(userName, FileSystemRights.CreateDirectories, AccessControlType.Allow));
            dirSec.SetAuditRule(new FileSystemAuditRule(userName, FileSystemRights.CreateDirectories, AuditFlags.Failure));
            Directory.CreateDirectory(logsFolder);
        }

但是,如果目录日志在“C:\Users\UserY”中不存在并且 UserY 不是机器的管理员,那么在创建上述目录时我会得到一个权限异常,正如我已经提到的那样。UserY 是否可以在“C:\Users\UserY”中创建这样的目录,如果可以,如何通过代码完成?

4

0 回答 0