9

Windows 7 64 ビットで Visual Basic 6 IIS アプリケーションをデバッグできるようにする必要があります。単一の問題だけでなく、継続的な開発のために。

デバッグを試みると、WebClass ランタイムから「不明なエラーが発生しました」というエラーが発生します。

デバッグせずにコンパイル済みの webclass にアクセスするだけで、ページは正常に読み込まれます。したがって、アプリケーションの登録/構成に問題があるとは思いませんが、VB6 IDE が IIS にフックしてデバッグを許可するのをブロックしている Windows OS のセキュリティに何らかの形で関連しています。

これが私が試したすべてのことです:

  1. ユーザーアカウント制御(UAC)を無効にして再起動しました。
  2. マシン デバッグ マネージャー (MDM) の DCOM コンポーネント セキュリティを変更し、"Everyone" の起動とアクティブ化のアクセス許可を割り当てました。
  3. VB6 IDE である "70F214BA-94E2-4bdf-8F30-32CB4A905E4D" の DCOM エントリを手動で追加し、"Everyone" の起動とアクティブ化のアクセス許可を割り当てました。
  4. 無効化された Windows ファイアウォール
  5. アプリケーション (VB6.exe) を Windows XP SP3 の互換モードで、管理者として実行オプションを使用して実行しました。
  6. ID を管理者アカウントに設定して、新しい IIS アプリケーション プールを作成しました。アプリケーション パイプライン モードをクラシックに設定し、32 ビットのレガシー アプリケーション サポートを有効にします。

これは、試してみるべきことの私の豊富な経験を使い果たしました. VB6 Windows アプリケーションまたは ActiveX コントロールを作成すると、簡単に起動してデバッグできます。

Windows Server 2003 で非常によく似た問題が発生しましたが、W2K3 の新規インストールで問題は解決しました。

Windows システム イベント ビューアー ログには、次のように、イベント ID 10004 の 2 つの重複したエントリがあります。

DCOM でエラー "1326" が発生し、サーバーを実行するために DOMAIN\User にログオンできませんでした: {70F214BA-94E2-4BDF-8F30-32CB4A905E4D}

DOMAIN\User は私のドメイン アカウントで、上記の GUID は VB ASP デバッグ用に追加した DCOM エントリです。

私が提供しなければならない唯一の追加情報は、Windows 7 64 ビットが VM で実行されているということですが、デバッグ中にコンソールにリモート接続されています。コンソールに接続していない VM でのデバッグで問題が発生したことがあります。

誰かが試してみるべきことについてさらに提案を提供できる場合は、大いに感謝します。

誰かがこれを理解し、Windows 7 OS で必要な設定を示す IIS Web アプリケーションを正常にデバッグできた場合、現在の賞金として 300 ポイントを提供します!

4

9 に答える 9

6

最近、Windows764ビットマシンで同じ問題が発生しました。私のために働いた解決策は、特定のDCOMエラーについてWindowsイベントログ(システム)をチェックすることでした。これは私が持っていたエラーです:

machine-default権限設定は、CLSID{17C2D338-9569-4022-8AF2-52A3A124F22D}およびAPPID{17C2D338-9569-4022-8AF2-52A3A124F22D}を持つCOMサーバーアプリケーションのローカルアクティベーション権限をユーザーNTAUTHORITY\IUSRに付与しません。アドレスLocalHostからのSID(S-1-5-17)(LRPCを使用)。このセキュリティ権限は、コンポーネントサービス管理ツールを使用して変更できます。

私にとって重要なポイントは、IUSRの組み込みアカウントの起動とアクティブ化の許可を与えることでした。このユーザーに個々のDCOMコンポーネントへのアクセス許可を与えることを試みて失敗した後、ユーザーをマシンのデフォルトのDCOMアクセス許可に追加することにしました。これは次のように実行できます。

dcomcnfgを実行します。Console Root / Component Services / Computers /MyComputerノードを右クリックします。[プロパティ]を選択します。[COMセキュリティ]タブを選択します。[アクセス許可]グループの下にある[デフォルトの編集]をクリックします。[追加]をクリックします。イベントログに示されているユーザーを入力します(私のものはIUSRでした)。[OK]をクリックします。「起動とアクティブ化のアクセス許可」グループについて繰り返します。すべてのダイアログで[OK]を選択します。

これらの設定を有効にするために、マシンを再起動する必要はありませんでした。XPで使用したのと同じ方法を使用してVB6dllをデバッグしました。つまり、VB6でdllを実行し(無人実行)、ブレークポイントを設定し、dllにアクセスしたページに移動して、ブレークポイントに到達するのを待ちます。お役に立てれば。

于 2013-01-04T21:52:04.537 に答える
4

これがさらに役立つかどうかはわかりません..私は同じ問題を自分で使用して調査しています。

ビューアーでも次のように表示されます。マシンのデフォルトのアクセス許可設定では、COM サーバー アプリケーションのローカル アクティベーション アクセス許可が付与されません。

CLSID 
{08855658-7A0B-4EF9-99B2-0AF875B3E62A}

APPID 
{08855658-7A0B-4EF9-99B2-0AF875B3E62A}

アドレス LocalHost (LRPC を使用) からユーザー NT AUTHORITY\IUSR SID (S-1-5-17) に送信します。このセキュリティ アクセス許可は、コンポーネント サービス管理ツールを使用して変更できます。

..だから私は「全員」にローカルアクティベーションを許可しようとしています - それをなくすことができるかどうかを確認するためだけに. -私はできません。

次に、コンポーネント サービス/マイ コンピューター (プロパティ) COM セキュリティ、起動、およびアクティベーションのアクセス許可で、ローカル アクティベーションを既定として付与します。

デバッグはまだできませんが、イベント ビューアでエラーが発生しなくなりました。ブラウザで私は得る

Server object error 'ASP 0178 : 80070005'

Server.CreateObject Access Error

/app.asp, line 4

Server.CreateObjectパーミッションのチェック中に への呼び出しが失敗しました。このオブジェクトへのアクセスは拒否されました。

上記の CLSID は私の vb6 アプリですが、レジストリは vb6debug.dll を指しています (これは正しいようです)。progID 一致など

vb6debug.dll およびその他のファイルに対する権限を全員に付与します。

次のステップは、procmon などで何が起こるかを確認することです。

于 2012-04-18T09:36:28.987 に答える
3

IIS ApplicationWindows XP よりも新しいバージョンの Windows では、IDE でVB6 をデバッグすることはできないと思います(おそらく、Windows のサーバー フレーバーでも状況は似ています)。この問題の根本的な原因は、IIS 6 と IIS 7+ の大きな違いにあるようです。もちろん、このトピックに関する公式ドキュメントはありません。したがって、以下で詳しく説明します。

まず、問題を要約することは理にかなっています。IIS Application多くの善良な人々は、これがこのコンテキストでの特別なタイプの VB6 プロジェクトを指す正確な用語であることを忘れているようです。Win7 Ultimate x64 SP1、Win7 Ultimate x86 SP1、および Vista Enterprise x86 SP2 で、次の手順に従ってエラーを再現できました。

  1. VB6 と SP6 をインストールします。
  2. 新しいIIS Applicationプロジェクトを作成します: ここに画像の説明を入力
  3. プロジェクトを保存します。
  4. [実行] -> [開始] (F5)を選択して、プロジェクトをデバッグします。
  5. [デバッグ] タブで任意のオプションを選択し、[OK] を押します。 ここに画像の説明を入力

その直後、VB6 IDE にエラー メッセージが表示されます。

ここに画像の説明を入力

同じシナリオを Windows XP で実行するとどうなるかを調べてみましょう。VB6 のデバッグを開始するとIIS Application:

  • VB6 IDE は、実行されていない場合、IIS サービスを開始します。

ここに画像の説明を入力

  • VB6 IDE は、IIS 仮想ディレクトリを選択するように求めます。

ここに画像の説明を入力

これはすべて、アクティブ化される に Windows XP で発生します。WebClassWindows 7 では、プロセスはこの段階に到達しません。

VB6 IDE が .NET ファイルをデバッグできるようにするために、IIS でいくつかの管理タスクを実行しようとしていることは明らかですWebClassProcess MonitorAPI Monitorの助けを借りて、もう少し深く掘り下げることができます。VB6.exe が IIS Admin Service の COM インターフェイスに依存していることは明らかです。悪いニュースは、IIS 7+ は以前のバージョンとは異なり、メタベースを使用せず、IIS 7+ には IIS Admin Service がないことです。IIS Metabase and IIS6 compatibility理論的には、メタベースを使用するアプリケーションが引き続き IIS 7 以降で動作できるようにするコンポーネントをインストールできます。

ここに画像の説明を入力

残念ながら、インストールしても問題は解決しません。

COM コンポーネントの不適切な起動およびアクティブ化権限が問題の原因である可能性があるという提案があります。残念ながら、これらの提案はすべて無駄です。この種のエラーには、常にシステム イベント ログに関連するエラー イベントが伴います。この場合、そのようなイベントはありません。

于 2013-04-14T15:40:11.037 に答える
2

男、同情できますか。私はこれにほぼ 3 工数を費やしましたが、まだ信じられないほど満足できる解決策はありませんが、うまくいくので、正しい解決策を見つけることを「あきらめ」、これを使用しました。これ以上リソースの時間を無駄にすることはできません。

IIS マネージャーで、仮想ディレクトリをクリックします -> 認証
- 匿名認証を無効にします
- 基本認証を有効にします

アプリを参照し、アプリが存在するファイル システム セキュリティの設定に基づいて、アプリを機能させるのに十分な権限を持つドメインまたはワークステーションの資格情報を入力します。

これは事実上、初めてデバッグを開始するたびに virtdir に対して自分自身を認証する必要があることを意味しますが、最終的にデバッグを再び機能させるために支払うのはわずかな代償です。

于 2012-04-24T02:02:28.440 に答える
2

ログファイルの書き込みを検討しましたか? 非常に簡単で、コードがエラーを引き起こす可能性が最も高いところから始めることができます。Sub/Function 名、Err オブジェクト、オプションの追加文字列などのいくつかのパラメーターを受け取る関数を作成して、コードがどのステップにあったかなどの追加情報を含めることをお勧めします。エラー ハンドラーで関数を呼び出して、あなたのパラメータ。

于 2012-01-05T00:39:24.717 に答える
1

Microsoftがそれを機能させたくないという問題ではなく、単に機能しないという問題であると確信できると思います. このドキュメントを知っていますか?: http://msdn.microsoft.com/en-us/vstudio/ms788708.aspx

それは述べています:

Visual Basic 6.0 IDE がネイティブ 64 ビット バージョンで提供されることはなく、32 ビット IDE が 64 ビット Windows でサポートされることもありません。64 ビット Windows または 32 ビット以外のネイティブ アーキテクチャでの VB6 開発はサポートされておらず、今後もサポートされません。

私も試してみましたが失敗したので、VM で 32 ビット OS を実行することを選択しましたが、問題なく動作しました。デバッガーを実行できるようにするために、デバッガーがカーネルにフックする方法が原因だと思います。

于 2012-06-05T12:01:49.697 に答える
1

Could you copy the information sent into the VB6 part of the application and test that from the console?

I mean, that's gross, but we are talking about debugging a hybrid IIS VB6 application.

于 2012-01-04T15:04:53.127 に答える
1

2012 年 9 月 14 日にこの問題が発生し、可能な限り簡単な方法で解決できました。デバッグ dll があります。XP で Visual Basic 6.0 が必要です。問題はありませんでしたが、Windows 7 に変更しましたが、iis7 に問題がありました。私は多くのフォーラムやブログを読みましたが、私は何もしていませんでした.セクション起動とアクティブ化のアクセス許可 -> デフォルトの編集 -> 次に、ローカル サービス アカウントを追加し、すべてのアクセス許可を付与します。はっきりさせておきますが、Visual Basic 6.0 の dll をローカルでデバッグすることはうまくいきましたが、それが良いか、唯一の解決策であるかどうかはわかりません。マイクロソフトhttp://support.microsoft.ページは同じことを言っていますが、私が行ったようにNETWORK SERVICEアカウントを追加し、イベントビューアに命令したという間違いのために働いたと言いました:

「お使いのコンピューターに既定で設定されたアクセス許可を設定しても、CLSID {95D14525-F934-4D4F-9B33-2CE753FAF3B0} および APPID {95D14525-F934-4D4F-9B33-2CE753FAF3B0} を持つ COM サーバー アプリケーションにローカル アクティベーション アクセス許可が付与されません。ユーザー NT AUTHORITY \ SID (S-1-5-19) をアドレス LocalHost に持つ LOCAL SERVICE (LRPC を使用)。このセキュリティ アクセス許可は、コンポーネント サービス管理ツールを使用して変更できます。

NT \ AUTHORITY \ NETWORK SERVICE LOCAL SERVICE アカウント ボーンと表示されます。

それだけです。

于 2012-09-14T19:09:53.050 に答える
0

アプリ インスタンスの作成時に VB6 IDE をデバッガーで起動したいようですが、失敗しています。デバッグ モードで VB6 IDE を起動して、COM コンポーネントをホストし、ソース内にブレークポイントを設定して、コンポーネントを使用するページにアクセスすると、デバッガーのブレークポイントがヒットするかどうかを確認しましたか? つまり、VB6 IDE のアクティブ化をループから外します。これを実行すると、アプリの CLSID が IDE のランタイム インスタンスを COM ホストとして指すようになります。

VB6 で開発を行ってから長い時間が経過したため、詳細の一部は大ざっぱかもしれませんが、COM サーバーのデバッグには多少の体操が必要だったことを覚えています。解決策の 1 つは、COM アウトとして VB の別のインスタンスを実行していたことです。プロセス サーバー ホスト。

于 2012-04-24T16:09:08.380 に答える