我得到" DAX错误","无法写入[路径] .INI文件"用于生产中的e Delphi COM(exe)服务器。
我搜索并调查了很多,但在第一个问题上没有找到任何明确,具体的答案:
什么是 DAX错误!?
第二部分:
错误与INI文件中的写入操作有关。
我发现无论何时在我们的遗留应用程序中使用INI文件,它都使用TiniFile
类 - 封装器用于INI文件WinAPI。
可以从此Delphi本机代码生成错误消息Unable to write to %s
:
procedure TIniFile.WriteString(const Section, Ident, Value: string);
begin
if not WritePrivateProfileString(PChar(Section), PChar(Ident),
PChar(Value), PChar(FFileName)) then
raise EIniFileException.CreateResFmt(@SIniFileWriteError, [FileName]);
end;
通过 DCOM 调用一些在INI文件上运行的自定义方法,在Windows系统事件中,在这段时间内观察到DCOM错误(仅打印屏幕,原始事件丢失)。 此外,从加载到某些Windows / Web服务中的C#共享DLL读取/更改相同的INI文件。
通常它可以工作,但只有在一个案例中,操作员才会看到该应用程序被冻结并且出现了这些消息。
问题2: 可能是INI文件写入失败的原因是什么? 可能是DCOM配置(访问权限?)或其他可能导致这种情况的原因吗?
操作系统:Windows Server 2003
Delphi7中
INI文件未在注册表中映射
我认为问题不应该出现,也不应该因为WriteString
从多个线程调用,因为WritePrivateProfileString
本身在写入时锁定/解锁文件(如果相信SysInternals Process Monitor),也不是因为文件本身是只读的(夜间不可能在几秒钟内改变属性)
任何想法,提示,链接都是受欢迎的。