Automaticamente executando um programa sem o Agendador de tarefas

1

Eu tenho um pequeno programa que precisa ser executado sem o uso do Agendador de Tarefas. Ele usa a API QBFC da Intuit, que exige ser executada "dentro do contexto de um usuário". O programa varre alguns dados de um servidor SQL em execução na mesma máquina e os envia para o QuickBooks. Assim, o programa precisa ser executado a cada meia hora ou mais e não requer interação do usuário. A máquina está executando o Windows Server 2008 R2.

Se eu executar manualmente o programa, ele funcionará como esperado. As tentativas de usar o Agendador de Tarefas resultaram na falha do programa quando ele tenta se conectar ao QuickBooks.

    
por Nixxay 01.12.2017 / 15:50

1 resposta

3

I am guessing you want the application to start when the user logs into their profile? If you want the program to automatically start, in any other case, that would require a scheduled task.

na verdade, você também pode colocá-lo na inicialização. Coloquei na inicialização do registro ( currentversion = > run ) e posso confirmar que funciona.

agora para responder a questão real do OP, acredito que encontrei a resposta para a pergunta- > não necessariamente uma solução para alcançar o objetivo.

QB and QBXML SDK applications have to run in the context of a user.You will have to have a Windows session open, but the user does not have to be logged in to QB for your application to run against it. However, QB will have to be opened by an admin the first time your application makes the connection and you authorize unattended mode.

intuit.developer

Windows Scheduler has changed from Desktop base to Service based from Vista or Win7 onwards, and the new OS has the Scheduler as Service based.

QuickBooks and QODBC are desktop based application/driver.

QODBC uses QuickBooks SDK, and QuickBooks SDK uses QuickBooks Application to get data from company file.

QuickBooks SDK requires an active desktop session (someone to is logged in) to the machine because QuickBooks is a desktop-based application. If no one logged on the server/machine, you will get the error "Could not start QuickBooks".

Even if you have specified the username/password and have a user logged into the machine, you may notice the same error. This is because task executed from Task Scheduler runs as a different user / new session.

The workaround is to use a Desktop Based Scheduler like Z-Cron or http://alternativeto.net/software/task-scheduler/?platform=windows.

fonte do texto citado

agora, essa pode não ser a solução desejada. mas responde à sua pergunta / problema e inclui uma solução alternativa.

Eu também estou enfrentando o mesmo dilema e estou procurando uma solução. isso pode ter que ser o caminho que eu vou. Outra opção é lançar o seu aplicativo de console em qualquer login de usuário e acompanhar sua última execução bem-sucedida, o status atual do aplicativo (esteja ele atualmente em execução ou não) - para garantir a execução dentro de sua programação especificada. mas não é apenas uma solução relativamente confusa, você não tem necessariamente uma garantia de que alguém fará o login durante o período de tempo necessário (eles podem nem mesmo fazer login por uma semana).

Eu tentei iniciar uma sessão remota, que faz com que o aplicativo seja executado a partir da inicialização, de outro servidor usando o agendador de tarefas. mas isso me deu exatamente o mesmo resultado.

estou atualmente olhando para QBWC, para ver se qualquer uma dessas abordagens me permitiria alcançar o objetivo desejado de comunicação com QB em uma base programada de forma autônoma.

lamento não poder fornecer uma solução definitiva para você, mas acho que você e outros podem ganhar com a pesquisa que já fiz até agora. Além disso, espero que essas informações ajudem você a encontrar a solução certa.

    
por 09.03.2018 / 18:09