C#,我可以将文件从流或其他文件保存到我的单个 exe 中吗?
Posted
技术标签:
【中文标题】C#,我可以将文件从流或其他文件保存到我的单个 exe 中吗?【英文标题】:C#, can I save a file from a stream or other to my single exe? 【发布时间】:2022-01-10 07:52:17 【问题描述】:我想获取一个序列化文件并将其保存到项目中的资源文件夹中。
我这样做的原因(也许有更好的方法)是我为运行的程序有一个已发布的 exe(单个可执行文件),当它创建一个序列化文件时,我不希望它把它保存到桌面。我需要以某种方式将其保存到我的 exe 中,而不需要超出它。
关于如何做到这一点的任何建议?
【问题讨论】:
推荐为应用程序保存“数据”的位置是 AppData 位置:docs.microsoft.com/en-us/windows/apps/design/app-settings/… ....docs.microsoft.com/en-us/dotnet/api/… 如果您希望设置/数据在其他地方登录时与用户一起漫游,则:docs.microsoft.com/en-us/dotnet/api/… ... 或...如果所有用户共享其数据...docs.microsoft.com/en-us/dotnet/api/… 将其保存到 App Data 文件夹之一。如果您希望它几乎无法被发现,请将其保存到 隔离存储 @CSmith 谢谢这是个好建议 @Flydog57 也很棒,谢谢;我还没有听说过隔离存储文件夹。我可能需要调查一下。 ig 我也可以在 appdata 文件夹中创建一个隐藏目录。我只是希望我不需要管理员权限来访问 appdata 文件夹。 【参考方案1】:这很丑.....但是您可以在 NTFS 系统上使用“替代数据流”。
http://ntfs.com/ntfs-multiple.htm
https://docs.microsoft.com/en-us/sysinternals/downloads/streams
How to read and modify NTFS Alternate Data Streams using .NET
https://blogs.msmvps.com/bsonnino/2016/11/24/alternate-data-streams-in-c/
https://oddvar.moe/2018/04/11/putting-data-in-alternate-data-streams-and-how-to-execute-it-part-2/
https://blog.foldersecurityviewer.com/ntfs-alternate-data-streams-the-good-and-the-bad/
https://www.irongeek.com/i.php?page=security/altds
您可能会有安全扫描程序阻止您这样做。
此外,如果您从 NTFS 卷复制到 FAT,则替代数据流将丢失。
还有一些备份软件可能无法正确备份 ADS。
https://wiki.sep.de/wiki/index.php/Support_for_NTFS_alternate_data_streams_(ADS)_for_Windows
https://www.2brightsparks.com/resources/articles/ntfs-alternate-data-stream-ads.html
https://community.osr.com/discussion/89308/alternate-data-streams-and-backups
https://social.technet.microsoft.com/Forums/Azure/en-US/007d5442-1cd8-4293-b717-b8fa72606189/ntfs-data-streams-broken-by-design-on-file-copy?forum=winserverfiles
【讨论】:
谢谢,但如果没有简单的方法,我可能只是将它们存储在计算机上以上是关于C#,我可以将文件从流或其他文件保存到我的单个 exe 中吗?的主要内容,如果未能解决你的问题,请参考以下文章
“无法打开流或文件“laravel.log”:无法打开流:权限被拒绝”
如何将 Visual Studio 中的 C# 项目保存到单个 .cs 文件而不是整个项目文件夹中?