Ok, baseei-me no comentário do @ Art.Vandelay05 e aqui está a solução (IMHO mais intuitiva ).
- Crie o script
Script.ps1
PowerShell com as seguintes linhas:
$Process = Get-Process
< service_process_exe_name_WITHOUT_the_exe >
$Process.ProcessorAffinity =
< versão hexadecimal do código de bits para a afinidade do processador > - Ir para
Administrative Tools/Task Scheduler
eCreate Task...
(NÃOCreate Basic Task
) -
separador Geral
- Marque Executar se o usuário está conectado ou não
- Alterar usuário ou grupo para um usuário local em sua máquina
-
Triggers
- Novo ...
- Ativado
- Iniciar a tarefa Em um evento
- Editar filtro de evento
- Use um pouco de
XSLT
para encontrar a mensagem para o seu serviço sendo iniciado. Eu usei:
<QueryList>
<Query Id="0" Path="System">
<Select Path="System">
*[EventData[Data[@Name="param1"] and (Data="
< your_service_name > ")]]
and
*[EventData[Data[@Name="param2"] and (Data="running")]]
</Select>
</Query>
</QueryList>
-
Ações
- Ação Iniciar um programa
- Programa / script: PowerShell.exe
- Adicionar argumentos (opcional): -Arquivo "path_to_script \ Script.ps1"
É isso! Agora, toda vez que seu serviço for executado, a afinidade será definida de acordo com o script do PowerShell que você escreveu.
Editar:
Certifique-se que seu usuário local tem o Debug Programs
( Ferramentas Administrativas / Política de Segurança Local / Atribuição de Direitos de Usuário / Depurar programas / adicione seu local usuário para este direito) ou seu usuário não poderá alterar a afinidade de um processo.