【问题标题】:Attach hidden options to a file in C#将隐藏选项附加到 C# 中的文件
【发布时间】:2015-11-05 18:06:04
【问题描述】:

所以我想在程序中的文件中附加一些秘密信息,VS2013 抛出异常说明:

An unhandled exception of type 'System.NotSupportedException' occurred in mscorlib.dll

Additional information: The specified path format is not supported.

对于线条:

string metafile = filename + ":key";
StreamWriter metadata = new StreamWriter(metafile);

我该如何解决这个问题?我需要它,因为这样我可以通过控制台使用以下命令检查它:“notepad file.txt:key”。

【问题讨论】:

  • 文件名的添加内容如何保密?您可以添加一个加密字符串,但记事本无法对其进行测试..
  • 这听起来像XY problem。我不认为一个晦涩的命名/隐藏文件是保存程序选项的正确方法。注册表或可见(但加密)文件呢?
  • prntscr.com/8zeh7y 这就是我要说的,我想访问这种文件扩展名。同样在代码中“文件名+”:key.txt”抛出相同的异常......
  • 没有迹象表明记事本确实访问了任何此类文件。

标签: c# visual-studio file filenames filepath


【解决方案1】:

StreamWriter 构造函数将尝试使用您传递给它的字符串的名称 (https://msdn.microsoft.com/en-us/library/fysy0a4b(v=vs.110).aspx) 打开文件——假设这是一个 Windows 系统,文件名不能包含冒号,因此“路径格式不支持”异常。

也许尝试使用下划线而不是冒号,即:

string metafile = filename + "_key";

【讨论】:

  • file.txt:a 为程序创建了一个隐藏的“文件”,可以用控制台打开,并随文件一起移动。因此,如果我创建 a.txt:a 并将其移动到其他位置,名称为 b.txt:a 它将具有相同的内容。
  • 重点是 Windows 通常无法做到这一点。 (我假设我们在这里谈论的是 Windows,如果不是,那就是另一回事了!)有一些方法可以解决它(例如,您可以回显到其中包含非法字符的文件,例如 - 例如“回显某些东西 > 文件:非法.txt") 但如果有办法在 C# 中做到这一点,我不知道。托管代码可能不允许这样做。如果不出意外,听起来您是通过默默无闻来寻求安全性,这通常取得有限的成功——正如其他一些人所建议的那样,使用某种类型的加密可能会更好。无论如何,祝你好运!
  • 使用谷歌、维基百科等半小时后,我发现了一个有趣的条目。 en.wikipedia.org/wiki/Fork_%28file_system%29#Microsoft
猜你喜欢
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-11
  • 1970-01-01
  • 1970-01-01
  • 2020-06-16
  • 1970-01-01
相关资源
最近更新 更多