进程外 COM 服务器 - 无法创建文件

Posted

技术标签:

【中文标题】进程外 COM 服务器 - 无法创建文件【英文标题】:Out of Process COM Server - can't create file 【发布时间】:2010-07-13 15:08:34 【问题描述】:

我正在尝试在其主线程中从进程外 COM 服务器运行以下代码,但从未创建任何文件。

我想知道是否有人可以告诉我这是为什么?

FILE *f = fopen("Log.txt", "w");
fputs("Tony", f);
fputs("\n", f);
fclose(f);

【问题讨论】:

【参考方案1】:

除了权限问题之外,文件实际创建但您无法找到它的可能性很大。您没有提供文件的完整路径名(如 "c:\\blah\\log.txt"),这意味着它将在 COM 客户端应用程序的当前工作目录中创建。保证与您的 COM 服务器所在的目录相同。

您需要指定完整路径。在 Windows 中,这应该是您保证可以写入的目录。使用 SHGetFolderPath() 获取 appdata 文件夹的路径。或者为日志留出一个固定的目录名(不推荐)。

【讨论】:

【参考方案2】:

我认为最可能的原因是 fopen 因访问被拒绝错误而失败。您是否尝试过单步执行代码?诊断此问题的最佳方法是附加调试器并检查 errno 的值。

【讨论】:

如果它不在 proc 中,我该如何调试它?有没有简单的方法?? @Tony -- 使用“调试 -> 附加到进程”。选择您的服务器进程作为目标。

以上是关于进程外 COM 服务器 - 无法创建文件的主要内容,如果未能解决你的问题,请参考以下文章

发现病毒文件,删除后又自动创建怎么办#yyds干货盘点#

COM客户端连接COM服务器所需的文件是什么(进程外方案)?

带有 Python 的 COM 本地服务器(进程外)

-bash: 无法为立即文档创建临时文件: 设备上没有空间

通过子进程调用 GhostScript 无法创建输出文件

该进程无法访问该文件,因为它正由另一个进程使用(文件已创建但不包含任何内容)