これについて何か助けていただければ幸いです。それはトリッキーなものかもしれません。:)
問題
- スケジュールされたタスクとして設定された 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 に関する情報は、決定的に役立ちます。
- 同様の経験が私を正しい方向に導くかもしれません。
- これをデバッグするためのヒント。