进程外 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 服务器 - 无法创建文件的主要内容,如果未能解决你的问题,请参考以下文章