none
C# 设置文件夹权限 报出异常: 未能转换部分或所有标识引用。 RRS feed

  • 问题

  • 修改文件夹权限时报出下面的异常

    异常: 未能转换部分或所有标识引用。
       at System.Security.Principal.NTAccount.Translate(IdentityReferenceCollection sourceAccounts, Type targetType, Boolean forceSuccess)
       at System.Security.Principal.NTAccount.Translate(Type targetType)
       at System.Security.AccessControl.CommonObjectSecurity.ModifyAccess(AccessControlModification modification, AccessRule rule, Boolean& modified)
       at System.Security.AccessControl.ObjectSecurity.ModifyAccessRule(AccessControlModification modification, AccessRule rule, Boolean& modified)

    代码如下:

           static void SetRight(string userName) {

                DirectoryInfo dir = newDirectoryInfo(@"D:\FTP");

                DirectorySecurity ds = dir.GetAccessControl(AccessControlSections.All);

                //继承设置bool ok;

                InheritanceFlags iflag = newInheritanceFlags();

                iflag = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit;

                FileSystemAccessRule arules = newFileSystemAccessRule(userName, FileSystemRights.FullControl, iflag, PropagationFlags.None, AccessControlType.Allow);

                ds.ModifyAccessRule(AccessControlModification.Set, arules, out ok);

                dir.SetAccessControl(ds);

                if (ok)
                    Console.Write("修改成功");

                elseConsole.Write("修改失败");

            }

            staticvoid Main(string[] args) {
                SetRight("IUSR_SHUN"); // 这里没有出现异常,成功修改   
                SetRight("User-Pc");    // 这里出现异常,修改失败(另一台计算机却没有导常)
            }

    测试后发现, 如果用户名包含了'-', 就会抛出异常.   后来再用另计算机B试了一下,  在计算机B里却没有异常. 

    现在没有头绪, 请问大侠知道是什么原因导致的吗? 有没有遇到过这情况? 

    因为用户名不能改, 希望各位大侠能帮个忙.

                                                   
    2013年1月18日 1:43

答案

全部回复

  • 你好!

    根据你上面的问题可以得出并不是用户名包含 '-' 造成的,可能是单个操作系统本身的问题。你可以在出问题的机器上新增一个用户带'-'符号的用户再试试,或者联系管理员删除操作系统的用户配置文件试试。


    知识改变命运,奋斗成就人生!


    2013年1月18日 5:52
    版主
  • 谢谢您. 

    经测试, 与'-'无关.   我让管理员新建立个带着'-'的用户, 能正常设置权限.

    但是系统在使用中, 无法删除系统的用户配置文件. 

    我再找找其它原因.

    2013年1月18日 7:55
  • 有没有可能是域帐户、本地帐户的问题。
    2013年1月18日 8:03
  • 谢谢各位,  问题解决了,  是一个低级错误..

    调用者, 写错了用户名. 打少了个0.

    2013年1月20日 7:06