C# を使用して xml ファイルをパスワードで保護するにはどうすればよいでしょうか。私は実際にC#でもファイルを作成しました(それが関連している場合ではありません)。今、パスワードで保護する必要があるため、クライアントや提案の人にメールで送信できます。
また、C#を使用してxmlファイルをzipファイルに入れようとしましたが、これを行うとファイルの拡張子が失われ、見つけたすべての方法でこれが行われるため、元のファイルをパスワードで保護したいと思います。
私はこれについてもっと明確にする必要がありました.ファイルは拡張子を永久に失います.エンドユーザーがそれを解凍すると、もはやxmlファイルではありません.名前が付いた単なるファイルであり、関連付けなどはありません.
OK、これを少し変更します。xml は単なるテキストであり問題ではないため、パスワードで保護されていないことが多く指摘されています。
FileStream sourceFile = File.OpenRead(@"C:\sample.xml");
FileStream destFile = File.Create(@"C:\sample.zip");
GZipStream compStream = new GZipStream(destFile, CompressionMode.Compress);
try
{
int theByte = sourceFile.ReadByte();
while (theByte != -1)
{
compStream.WriteByte((byte)theByte);
theByte = sourceFile.ReadByte();
}
}
finally
{
compStream.Dispose();
}
上記のコードはファイルを圧縮しますが、エンド ユーザーがファイルを解凍すると、ファイルの xml 拡張子が失われ、ファイルの関連付けが失われます。
OK、更新があります。ファイルの拡張子が失われないようにする方法を見つけました。出力ファイル名をsample.xml.zipに変更すると、システムはそれをうまく処理します。出力ファイルはこのように読み出されます。サンプル.xml.zip ですが、winzip は決してそれを開くことを嫌がらず、7zip もそうではありません。これで完全に満足しています。パスワードで保護されたものは、まだ理解できていません。
参考までに、私の新しいコード。
FileStream sourceFile = File.OpenRead(@"C:\sample.xml");
FileStream destFile = File.Create(@"C:\sample.xml.zip");
GZipStream compStream = new GZipStream(destFile, CompressionMode.Compress);
try
{
int theByte = sourceFile.ReadByte();
while (theByte != -1)
{
compStream.WriteByte((byte)theByte);
theByte = sourceFile.ReadByte();
}
}
finally
{
compStream.Dispose();
}