【发布时间】:2021-08-31 03:29:24
【问题描述】:
我有一个 winform 应用程序,有时需要在与服务的连接中断时将信息记录到本地文件。重新连接后,所有日志文件将被发送到用于登录数据库的服务。由于日志存储在应用程序文件夹的根目录中,因此计算机的其他用户帐户可以读取它。因此,如果发生异常的用户 A 没有连接到服务,则用户 A 的日志文件内容将在用户 B 连接到服务时发送。
问题是有些用户没有给根文件夹写权限。
可以使用特殊的用户文件夹,但问题是用户 B 将无法将用户 A 日志文件发送到服务。
是否有任何共享的 Windows 文件夹可供我随时写入?还是我必须要求应用程序根目录的写入权限?
问候
【问题讨论】:
-
可能是
System.IO.Path.GetTempPath()? -
@Klamsi 如果您希望保留数据以便检查日志,那么在临时路径中写入是有风险的。 Windows 集成的磁盘可用空间工具可以从 TempPath 中删除文件。
-
据我所知,本地日志只是临时的“当与服务的连接中断时”,直到“重新连接后所有日志文件将被发送到服务以登录数据库。”。但是,是的,你是对的,不能保证他们还在这里。
-
标准是:用户临时路径如果是临时的,用于流程执行会话或
%USER%\AppData\Roaming\Company\Application\Log或%USER%\Documents\Roaming\Company\Application\Log或%PROGRAMDATA%\Company\Application\Log要共享。见Work with user paths
标签: c# file io permissions