Domanda

Io apprezzo molto un certo aiuto su questo! Può essere un ingannevole. :)

problema

  • Ho un'applicazione VB6 che è impostato come operazione pianificata. Si inizia ogni volta, ma durante l'esecuzione di CreateObject() fallisce se un utente non è connesso al computer.
  • Cerco informazioni su quello che potrebbe causare questo. Il mio sospetto principale è che alcune API di Windows non riesce.

Punti chiave

  • Comportamento confermato su Windows 2000, 2003, 2008 e Vista.
  • I esegue applicazioni come utente X al momento in programma, eseguiti da Windows Task Scheduler.
  • Esegue ogni volta. Applicazione si avvia!
    • Se l'utente X è connesso via RDP funziona perfettamente. (Nota che l'utente non ha bisogno di essere collegato, registrato solo su)
    • Se l'utente X non è connesso al computer applicazione non riesce.

punto Failure

  • Applicazione non riesce quando si utilizza CreateObject() creare un'istanza di un oggetto DCOM che è anche parte dell'applicazione.
  • L'oggetti DCOM dichiarano dll riferimenti all'avvio (a livello globale / in cima .bas-file) ed eseguire una piccola funzione di avvio. Fallimento deve essere durante l'avvio, possibilmente in una delle dll-dichiarazioni.

Pensieri

Dopo qualche Googling mio sospetto iniziale era diretto a MAPI. Da quello che ho potuto vedere MAPI utente richiesto per aver effettuato il login. L'applicazione ha riferimenti MAPI. Ma anche con tutti i riferimenti MAPI rimossi lo fa ancora non lavoro.

Qual è la differenza se un utente è connesso? mappatura del Registro di sistema? Ambiente? Explorer.exe è in esecuzione.

Non è l'utente connesso quando esegue applicazioni come utente?

Quali informazioni aiuterebbe?

  • Una risposta definitiva potrebbe essere veramente grande.
  • qualsiasi informazione riguardante la funzione di VB6 / API di Windows che potrebbe agire in modo diverso a seconda se l'utente è connesso o no definitivamente aiuto.
  • esperienze simili può guidami per la giusta direzione.
  • Suggerimenti per il debug di questo.
È stato utile?

Soluzione 3

Non abbiamo mai scoperto cosa ha causato questo.

Invece ho fatto un client RDP, che ho messo in Operazioni pianificate. E 'il login di un utente che ha avuto l'applicazione desiderata in avvio. Dopo qualche tempo il client RDP con forza disconnesso l'utente (per evitare che le applicazioni in fuga appesi al sistema).

Non è la soluzione perfetta, ma una soluzione comunque.

Altri suggerimenti

L'applicazione VB forse ha bisogno di entrare in possesso su di eseguire servizi in esecuzione solo quando un utente è connesso.

Qual è l'impostazione "identità" del componente DCOM.

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

  1. C: \ WINDOWS \ system32 \ Com \ comexp.msc
  2. Servizi componenti
  3. Risorse del computer
  4. Config DCOM
  5. L'oggetto DCOM , destra Fare clic su Proprietà
  6. Identità

impostarlo su "questo utente" e impostare un utente con le autorizzazioni necessarie, e quindi eseguire l'applicazione come la vostra auto per vedere se il componente DCOM può ancora funzionare, quindi riprovare dal programmatore.

ha i moduli VB6?
perché quando si esecuzione pianificata, gestirlo "as a service", quindi non può avere forme, o se ha le forme di un ambiente in cui per mostrare loro.

Non ricordo quello che ho usato, ma esiste "run as a service" generico convertitore exe a correre con finestre VB6 progetti.

Inoltre, forse si può facilmente convertire il codice per l'esecuzione come VBScript e programmarlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top