Windows 7 32ビット、IIS 7.5.760016385
Visual Basic6.0でDLLを作成し、クラシックASPコード内から使用しようとしています:
set obj = Server.CreateObject("a.b")
次のエラーが発生します。
006 ASP 0178
Server.CreateObjectアクセスエラー
アクセス許可の確認中にServer.CreateObjectの呼び出しに失敗しました。このオブジェクトへのアクセスは拒否されます。
err.number = -2147024891
Iusr_cmpnameユーザーを作成し、このASPページのデフォルトのWebサイトと仮想ディレクトリで権限を付与してみました。dllをREGSVR32で実行しました。
「Windows機能のオンとオフを切り替える」に移動し、IIS/World Wide Webサービス/アプリケーション開発機能を選択してから、ASP、ASP.net、ISAPI拡張機能、およびISAPIファイラーをオフにしました。
私はさまざまなニュースグループで多くのリードをフォローしてきましたが、この問題を乗り越えることができます。昨年、1年半前にこれを試しましたが、同じ問題がありました。この問題を克服できなかったので、WindowsNTに戻りました。 NTではこの問題は発生しませんでした。
現在、Windows 7に再び移行できるように、これを乗り越えようとしています。多くの人がこの問題を抱えているようですが、彼らが見つけて投稿した解決策は、私が必要としているものではないようです。
どんな助けでもありがたいです。ありがとうございました。
この問題は、IISファイルシステム上のカスタムVB6Active Xdllにアクセスできないことに関連しているようです。作成したカスタムdllをデフォルトと同じディレクトリに登録しました。 Webアプリケーションであり、オブジェクトを作成するためにASPを取得できました。
これが私がしたことです:
Windows 7 Professional 64ビット、SP1のクリーンインストール。
Windowsを有効にするASP機能
この手順は64ビットWindowsの場合のみ-IIS Managerを使用して、デフォルトのアプリケーションプールに対して32ビットアプリケーションを有効にします。
Utils.cls:
Public Function Sum(ByVal a As Integer, ByVal b As Integer) As Integer
Sum = a + b
End Function
Default.asp:
<%@ Language=VBScript %>
<%
Option Explicit
Response.Expires = 0
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
Function Sum(a, b)
Sum = a + b
End Function
Function Sum2(a, b)
Dim adder
set adder = Server.CreateObject("CXUtils.Utils")
Sum2 = adder.Sum(a, b)
set adder = nothing
End Function
%>
<html>
<head>
<title>Add</title>
</head>
<body>
<b>2 + 3</b> = <%= Sum(2,3) %><br />
<b>3 + 4</b> = <%= Sum2(3,4) %>
</body>
</html>
これがすべてコンパイルされない場合はお詫びします-フォーマットを正しく表示するために多くの編集が行われました。
Procmon を使用してアクセス違反を見つけることを強くお勧めします。私は何年も前に同様の問題を抱えていました、そしてこれがそれを解決した唯一のことでした。そのシナリオでは、システムの一時フォルダーに対するアクセス許可が不足していることが判明しました。
Procmonの結果を投稿すると、この回答を修正してさらに役立つようにすることができる場合があります。
動作する可能性のある別のアプローチは、DLLをDCOMアプリケーションとしてdcomcnfgにインストールすることです。これは、異なる資格情報で実行されます。
このページは、問題がVBランタイムに割り当てられたアクセス権である可能性があることを示唆しています。Msvbvm60.dllの読み取りおよび実行権限を全員に割り当ててみてください。
私も同じような問題を抱えていたと思います。私はVB6で実行されていたVB6 DLLでインタラクティブにデバッグコードを試みていましたIDEクラシックASPアプリケーションから。アプリケーションがServer.CreateObjectステートメントを実行すると、次のエラーが返されました。
サーバーオブジェクト:006〜ASP 0178〜Server.CreateObjectアクセスエラー〜アクセス許可の確認中にServer.CreateObjectの呼び出しに失敗しました。このオブジェクトへのアクセスは拒否されます。
ところで、私はWindows7環境でIIS 7.5を実行しています。問題は、VB ASP DCOMでのデバッグおよび/またはIISではなくDCOMでの不適切なアクセス許可。記事のURLは http://support.Microsoft.com/kb/q259725 。回避策#1を実装しました。後で再起動すると、ASPからVB DLLコードにステップインできます。Microsoft用に1つチョークして、私はそれをあまり頻繁に言いません:-)