2

これについて何か助けていただければ幸いです。それはトリッキーなものかもしれません。:)

問題

  • スケジュールされたタスクとして設定された VB6 アプリケーションがあります。毎回起動CreateObject()しますが、ユーザーがコンピューターにログオンしていない場合、実行時に失敗します。
  • これを引き起こす原因についての情報を探しています。私の主な疑いは、一部の Windows API が失敗することです。

キーポイント

  • Windows 2000、2003、2008、Vistaで動作確認済み。
  • アプリケーションは、スケジュールされた時刻にユーザー X として実行され、Windows タスク スケジューラによって実行されます。
  • 毎回実行されます。申し込み開始!
    • ユーザー X が RDP 経由でログオンしている場合、完全に実行されます。(ユーザーは接続する必要はなく、ログオンするだけであることに注意してください)
    • ユーザー X がコンピューターにログオンしていない場合、アプリケーションは失敗します。

故障箇所

  • CreateObject()アプリケーションの一部でもある DCOM オブジェクトをインスタンス化するために使用すると、アプリケーションが失敗します。
  • DCOM オブジェクトは、起動時に (グローバルに/.bas ファイルの上に) .dll 参照を宣言し、小さな起動関数を実行します。失敗は、おそらく .dll 宣言のいずれかで、起動中に発生する必要があります。

考え

グーグルで調べた後、最初の疑いはMAPIに向けられました。私が見ることができたものから、MAPI はユーザーがログオンする必要がありました。アプリケーションには MAPI 参照があります。しかし、すべての MAPI 参照を削除しても、まだ機能しません。

ユーザーがログオンしている場合の違いは何ですか? レジストリ マッピング? 環境?Explorer.exe が実行されています。

ユーザーとしてアプリケーションを実行するとき、ユーザーはログオンしていませんか?

どのような情報が役立ちますか?

  • 決定的な答えは本当に素晴らしいでしょう。
  • ユーザーがログオンしているかどうかに応じて異なる動作をする可能性のある VB6 機能/Windows API に関する情報は、決定的に役立ちます。
  • 同様の経験が私を正しい方向に導くかもしれません。
  • これをデバッグするためのヒント。
4

4 に答える 4

1

VBアプリケーションは、ユーザーがログオンしているときにのみ実行されているサービスの実行を保持する必要がある場合があります。

于 2010-04-09T19:03:04.180 に答える
1

DCOM コンポーネントの「Identity」設定とは何ですか。

C:\WINDOWS\system32\Com\comexp.msc

  1. C:\WINDOWS\system32\Com\comexp.msc
  2. コンポーネント サービス
  3. 私のコンピューター
  4. DCOM 構成
  5. DCOM オブジェクト、右クリック プロパティ
  6. IDタブ

「このユーザー」に設定し、必要なアクセス許可を持つユーザーを設定してから、自分自身としてアプリを実行して、DCOM コンポーネントがまだ機能するかどうかを確認してから、スケジューラから再試行してください。

于 2010-04-09T19:48:58.827 に答える
0

VB6フォームはありますか?
スケジュールされた方法で実行すると、「サービスとして」実行されるため、フォームを作成できないか、フォームがある場合はそれらを表示する環境になります。

何を使用したかは覚えていませんが、ウィンドウ化されたVB6プロジェクトを実行するための一般的な「サービスとして実行」コンバーターexeが存在します。

また、コードをVBScriptとして実行するように簡単に変換し、スケジュールすることもできます。

于 2011-04-14T18:33:32.587 に答える
0

何が原因なのかはわかりませんでした。

代わりに、スケジュールされたタスクに配置するRDPクライアントを作成しました。起動時に必要なアプリを持っているユーザーにログオンしました。しばらくすると、RDPクライアントはユーザーを強制的にログアウトします(暴走したアプリがシステムをハングさせるのを防ぐため)。

完璧な解決策ではありませんが、それでも解決策です。

于 2010-12-29T10:00:07.690 に答える