设置文件访问规则

以下function适用于Windows XP,现在我尝试用Windows 7它返回IdentityNotMappedException错误有什么问题? 我还将应用程序requestedexecutionlevel更改为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:无法翻译部分或全部身份引用

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

 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”。