c# - 无法以编程方式删除 PDF 文件
问题描述
我无法从在 Windows 10 操作系统上运行的 c# Winform 桌面程序的共享驱动器(Windows 映射驱动器)中删除 pdf 文件。pdf文件是由我的c#程序中的Crystal Report创建的,当有修订时,我需要删除旧的pdf文件并编写新的。当程序尝试删除文件时,我将收到拒绝访问错误(HResult=0x80070005)。这只发生在我尝试从共享驱动器中删除它时。如果我在本地驱动器 (c:) 中生成 pdf 文件,并将其从本地驱动器中删除,那么一切都找到了。我可以从文件资源管理器中手动删除 pdf 文件,但不能从我的 c# 程序中删除。
另外,如果文件不是pdf文件,那么从共享驱动器中删除它是没有问题的。
奇怪的是,这只发生在 pdf 文件或扩展名为 .pdf 的文件上。如果我用 C++ 创建一个简单的文本文件 (test.txt) 并将其保存在共享驱动器中,我可以毫无问题地删除它。但是当我创建相同的文本文件并将其命名为 test.pdf 时,我无法删除它。
HResult=0x80070005 似乎只是权限问题的链接,但我坚信我的情况不是权限问题,因为如果文件是 *.txt,那么我可以随时删除它而不会出现任何问题。
为了排除pdf文件可能仍然与Crystal Report链接或被某些程序打开的可能性,我从共享驱动器中复制了pdf文件并将其保存在我的本地驱动器(c:)中并编写了一个简单的c++程序测试我是否可以删除它,但它失败了。无法删除。如果 pdf 文件最初创建并保存在本地驱动器中,我只能将其删除。如果pdf文件从共享驱动器复制到本地驱动器,那么我无法删除它。
如果有人能对此有所了解,我将不胜感激。
解决方案
我认为(您/您的应用程序)没有删除文件的权限
- 转到包含 PDF 文件的文件夹。
- 右键单击该文件夹并选择属性。
- 导航到安全选项卡。
- 单击编辑,然后单击添加。
- 在输入要选择的对象名称框下。键入“Everyone”(不带引号)并单击检查名称。单击确定。
- 将打开一个带有“安全”选项卡的新窗口。在所有人的权限下,选中完全控制选项。选择应用并确定。
- 该文件夹已被允许拥有所有权。
- 现在您可以通过编程方式删除 PDF 文件
推荐阅读
- numpy - numpy 如何将函数导出到 API?
- javascript - 如何从输入文本框中获取输入组单选值
- ios - CAGradientLayer 里面有一个透明的洞
- java - 为什么 DirectRunner 不执行管道中的步骤,而 DataflowRunner 它可以工作
- python - python - 为什么我安装后无法在python中导入pyvista包
- c# - 如何检查用户是否已存在于firebase c#中
- reactjs - 使用 vanilla-extract 作为 Material-UI 的样式引擎
- android - 完全重启 android 应用程序,包括应用程序类
- reactjs - React - 带有正文的 axios 发布请求
- microsoft-graph-api - Microsoft Graph Api - 更新 PasswordProfile 在 null 时不起作用