以下功能适用于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:部分或全部身份参考无法翻译
答案 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”。