2

データベースの 1 つにアクセスするために構築した .NET アセンブリを取得し、Delphi アプリケーションで使用するために別のプログラマーに渡しました。

ユーザー ログイン(管理者権限なし)で実行されている Vista および Windows 7 マシンでは、Delphi EXE を実行すると「Ole Error 8013150A」で失敗しますが、テストした他のすべての OS タイプでは動作します。

管理者として実行すると、Delphi EXE が機能します。

EXE が管理者として 1 回実行されると、それ以降は正常に実行されたときに正常に動作します。

管理者権限を必要とする 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 gets Security Exceptionですが、もちろん、最初は OLE 例外を追跡していました!

助けてくれてありがとう

于 2012-05-18T01:05:55.653 に答える