Pergunta

Eu tenho um aplicativo que é chamado por uma tarefa agendada. Moveu-se a partir do Windows Server 2003 para o Windows Server 2008. Em 2003, o aplicativo funcionou no diretório onde o executável foi localizado. Em 2008 Environment.CurrentDirectory (C #) relatos de que ele está em execução em C: \ Windows \ System32. Como faço para definir o diretório em execução? Estou usando schtasks.exe para implantação de linha de comando.

UPD :. Através da interface, que parece ser o "Iniciar em (opcional)" na tela de ação de edição

UPD :. Looks como usar o arquivo XML pode ajudar, mas eu estou procurando fazer sem ele

Foi útil?

Solução

Recentemente, deparei com o mesmo problema. A maneira como eu resolvi que era para adicionar o parâmetro / V1 para o comando schtasks.

/ V1 cria uma pré-vista tarefa agendada compatível e automaticamente preenche o diretório Iniciar em.

Outras dicas

Só queria acrescentar detalhes que são válidas para o Windows Server 2008 e 2012. Como muitas pessoas podem entender capturas de tela melhor aqui é uma captura de tela:
enter descrição da imagem aqui

Para resumir. Ao criar a ação para sua tarefa agendada você tem a opção de definir o "Iniciar em (opcional)" (arredondado em vermelho na captura de tela). Este será o diretório de onde o processo é desencadeado.

Espero que isso ajude!

Você pode definir o início no diretório usando o seguinte comando

A chave é o \ no interruptor / tr.

SCHTASKS /Create /u username /p pswd /ru "NT AUTHORITY\SYSTEM"
  /rp /sc ONSTART /tn task-name /tr "\"D:\name-of-file-to-run\" "

Por favor, veja minha resposta a uma pergunta semelhante , de como definir a opção 'Acordar o computador para executar esta tarefa ...' que só está disponível a partir do Scheduler UI Task (e via XML), e não a linha de comando schtasks.exe /create.

O porcas e parafusos de que são:

  1. Crie a sua tarefa através schtasks.exe /create /tn MyTask ...
  2. Exportar sua tarefa de XML via schtasks.exe /query /xml /tn MyTask > MyTask.xml
  3. Atualização este XML via XSLT ou uma pesquisa / substituir
  4. Re-import (substituindo a tarefa de idade) via schtasks.exe /create /tn MyTask /xml MyTask.xml /f

Os detalhes estão aqui .

Tente cd /d "<WorkingDirectory>" & schtasks <SchtasksParams>

Alterar diretório de trabalho e execute schtasks .

Espero que as pessoas verá esta resposta para a abordagem XML (francamente, eu acho que é um método mais limpo e há uma melhor documentação em torno do que os parâmetros que você pode definir a específica configurar os recursos dentro da tarefa também) .

Passo 1: criar o arquivo XML que define todas as configurações de tarefas , vários lugares para mais informações sobre os elementos XML:

Passo 2: Específico para "onde" a tarefa será executada a partir (como no diretório de iniciar o roteiro terá início na linha de comando, isso está diretamente relacionada à pergunta do OP .... você precisará configurar o parâmetro como assim ...

<?xml version="1.0" encoding="UTF-16"?> 
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> 
  <RegistrationInfo> 
    <Date>2012-08-19T16:49:14.6182</Date> 
    <Author>YOUR-COMPUTER-DOMAIN\YOUR-USERNAME</Author> 
  </RegistrationInfo>

    ... a bunch of other stuff in between here ....

  <Actions Context="Author"> 
    <Exec> 
      <Command>C:\PythonEXE\mini_program_test.exe</Command> 
      <Arguments></Arguments> 
      <WorkingDirectory>C:\Some\where\here\</WorkingDirectory> 
    </Exec>
  </Actions> 
</Task> 

Por favor nota acima que não existem quaisquer aspas no WorkingDirectory paramater -. Eu cometi esse erro antes

Passo 3: Uma vez que você estará usando schtasks.exe , a fim de criar esta nova tarefa através do XML, dê uma olhada aqui para mais informações: https://msdn.microsoft.com/en-us/library/bb736357.aspx

Passo 4: Na janela comando linha, você vai executar algo como isto (uma vez que seu XML está pronto)

C:\>schtasks /CREATE /TN "TASK-NAME-HERE" /RU "YOUR-USERNAME" /RP "YOUR-PASSWORD" /XML C:\YOUR-XML-FILE-LOCATION\ready.xml

Espero que isso ajude um pouco - se divertir

Use My.Application.Info.DirectoryPath na App sem precisar de uma configuração XML.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top