1

64ビットの問題が発生しています。これがスクープです:

私は32ビットのCOMexe(FoxProで書かれています)を持っています。このexeは、32ビットのCOM dll(これもFoxProで記述されています)を呼び出します。32ビットWindowsの世界では、dllはC:/Windows/System32ディレクトリに配置され、に登録されてC:/Windows/System32/regsvr32.exeおり、すべて問題ありません。exeを起動でき、dllを必要とするすべてのプロセスに問題はありません。

64ビットの世界では別の話です。Windows 7 x64私はこのアプリケーションを次のように 実行されているマシンにインストールしようとしました:

  • dllを配置しますC:/Windows/SysWOW64
  • に登録しましたが、「管理者として実行」コンテキストメニューオプションを使用してC:/Windows/SysWow64/regsvr32.exe実行することによってのみ、登録を成功させることができました。regsvr32

これで、exeを実行しようとすると、[管理者として実行]オプションを使用してexeを起動した場合を除いて、dllを呼び出すことができません。これは良くない。単純なアプリを実行するためだけに、ユーザーが管理者である必要はありません。

「管理者として実行」オプションを必要とせずにこれを機能させる方法を知っている人はいますか?

ありがとうございました!

-ケン

4

1 に答える 1

4

古いものです。おそらく、権限が制限されたユーザー アカウントで試したことはありませんでした。おそらく、HKLM\Software のレジストリ キーへの書き込みや c:\windows でのファイルの作成など、禁止事項を実行します。それは終わり、最近では終わりです。

何が行われるかわからない場合は、SysInternals の ProcMon ツールを使用して、ディスクとレジストリを使用して監視します。少し掘り下げる必要がありますが、アクセス拒否エラーが表示されるはずです。コードを変更できない場合は、このコンポーネントのサポートを終了することを検討する必要があります。中間ソリューションとして、特定のファイルまたはレジストリ キーの権利をハッキングすることができます。c:\windows ディレクトリに対して何もしないでください。解決するよりも多くの問題を引き起こします。これは別のことですが、コンポーネントは実際にはプライベート Windows ディレクトリに属していません。

于 2010-08-25T16:20:14.100 に答える