2

我已经构建了一个 .NET 程序集来访问我们的一个数据库,并传递给另一个程序员在他们的 Delphi 应用程序中使用。

在以用户登录(没有管理员权限)运行的 Vista 和 Windows 7 机器上,运行 Delphi EXE 失败并显示“Ole 错误 8013150A”,但在我们测试的所有其他操作系统类型上都可以正常工作。

Delphi EXE 在以管理员身份运行时工作。

一旦 EXE 以管理员身份运行一次,从那时起它在正常运行时将正常工作。

我在想在需要管理员权限的 Delphi 应用程序中实例化 COM 接口时需要在注册表中写入一些内容,但是一旦写入就不需要再次完成......或者类似的东西?

错误 8013150A 似乎与我能在上面找到的少量信息中的安全错误有关。

有任何想法吗?

4

1 回答 1

1

问题原来是 .NET 程序集中的以下代码

string cs = "ANameDoesntExist";
EventLog elog = new EventLog();
if (!EventLog.SourceExists(cs))
{
    EventLog.CreateEventSource(cs, "Application");
}
elog.Source = cs;
elog.EnableRaisingEvents = true;

在通过用户帐户登录的 Vista 和 Windows 7 机器中,只需将此代码放在基本表单上,就会导致 System.Security.Security 异常。

它将在管理员中工作,当然在创建之后在用户安全中工作!

具有讽刺意味的是,添加此日志记录是为了尝试找出我们在代码中遇到其他问题的原因!

该错误也出现在 StackOverflow 中C#: Simple Windows Service Gives Security Exception但当然我最初是在追踪 OLE 异常!

谢谢您的帮助

于 2012-05-18T01:05:55.653 回答