设置文件访问规则

时间:2012-08-31 12:18:06

标签: c# .net

以下功能适用于Windows XP,现在我尝试用Windows 7它返回IdentityNotMappedException错误有什么问题?我还将应用程序请求的执行级别更改为admin。

private static void file_accessdeny(string fileName)
{
    try
    {
        System.Security.AccessControl.FileSecurity accessdeny = System.IO.File.GetAccessControl(fileName);
        accessdeny.SetAccessRule(new System.Security.AccessControl.FileSystemAccessRule("Everyone", System.Security.AccessControl.FileSystemRights.FullControl, System.Security.AccessControl.AccessControlType.Deny));
        System.IO.File.SetAccessControl(fileName, accessdeny);
    }
    catch (System.Exception E)
    {
        Console.WriteLine(E.Message);
        System.Windows.Forms.MessageBox.Show(E.Message, "access deny");
    }
}

错误: System.Security.Principal.IdentityNotMappedException:部分或全部身份参考无法翻译

1 个答案:

答案 0 :(得分:10)

请在您的代码中尝试此操作:

accessdeny.SetAccessRule(
   new System.Security.AccessControl.FileSystemAccessRule(
   new SecurityIdentifier(WellKnownSidType.WorldSid, null),
   System.Security.AccessControl.FileSystemRights.FullControl,
   System.Security.AccessControl.AccessControlType.Deny));

错误消息显示“无法翻译” - 这是Windows告诉您当它试图找到“Everyone”组的SID(即翻译)时...它无法通过该名称找到它。

其中一个原因是您在不同的区域设置下运行Windows。例如在德语中,该组被称为“Jeder”。