2012-10-15 85 views
0

我希望写入受保护的文本文件请注意此内容非常重要。 我可以写入文件以保护它,我将使用加密 ,但不希望任何人阅读文件的内容。我试图用 使用File.WriteText?但问题是该文件被写入,然后 未使用,因此任何人都可以阅读该内容。写入受保护的文件

保护例如。像SAM文件

+1

你需要弄清楚你的“保护”的意思。更新你的问题,说出谁应该和谁不应该能够读取你的文件。 –

+0

您的意思是指定文件的权限,或者只是没有人能够从资源管理器打开文件,只有您的程序可以读取它? – Abbas

+0

嗨伙伴我的意思是所以只有我可以读它谢谢:> –

回答

0

在Microsoft Dotnet框架中,TextFile attributes在c#中可用,可让您保持文件的加密和只读。写保护可以使用FileIOPermissionAccesss如果当前用户是管理员,那么他将能够给予保护和删除特定权限的文件。以下是添加权限的示例代码。

var permissionSet = new PermissionSet(PermissionState.None);  
var writePermission = new FileIOPermission(FileIOPermissionAccess.Write, filename); 
permissionSet.AddPermission(writePermission); 

if (permissionSet.IsSubsetOf(AppDomain.CurrentDomain.PermissionSet)) 
{ 
    using (FileStream fstream = new FileStream(filename, FileMode.Create)) 
    using (TextWriter writer = new StreamWriter(fstream)) 
    { 
     // try catch block for write permissions 
     writer.WriteLine("sometext"); 


    } 
} 
else 
{ 
    //perform some recovery action here 
} 
0

我也遇到过类似的问题,而不是在我的情况下,问题是在我的文件中 数据应该是所有人都能看到甚至admin用户, 并为每个应用程序运行时以前的数据应该是 被新的替换。

这里是我的代码

string pathfile = @"C:\Users\Public\Documents\Filepath.txt"; 
    if (File.Exists(pathfile)) 
    { 

        File.Delete(pathfile); 


       } 
       if (!File.Exists(pathfile)) 
       { 


        using (FileStream fs = File.Create(pathfile)) 

        { 
         Byte[] info = new UTF8Encoding(true).GetBytes("Your Text Here"); 

         fs.Write(info, 0, info.Length); 


         FileSecurity fsec = File.GetAccessControl(pathfile); 
         fsec.AddAccessRule(new FileSystemAccessRule("Everyone", 
         FileSystemRights.FullControl, AccessControlType.Deny)); 
         File.SetAccessControl(pathfile, fsec); 

        } 


        } 
相关问题