
Estou executando o Windows 7 de 64 bits. Quando desligo meu computador, tenho muitos programas abertos na área de trabalho. Quando eu inicio meu computador, quero que esses programas abram automaticamente. Estou ciente do SaveMyCache, isso exige que eu marque as caixas toda vez que desligo meu computador, quero algo automático.
Responder1
Algo que se aproxima do que você está perguntando: habilite a hibernação no gerenciamento de energia e em vez de desligar o PC, use a opção de hibernação. Isso desliga a energia do seu PC e o restaura ao estado em que estava quando desligou o sistema.
Fora isso, não há nenhuma funcionalidade integrada que faça o que você está pedindo. O gerenciador de reinicialização do Windows foi criado para situações como essa, mas o software precisa oferecer suporte a isso e normalmente só é usado ao instalar novo software ou quando atualizações são instaladas.
Responder2
Então decidi criar este script Powershell.
Versão com captura dos argumentos do processo também.
As ações realizadas:
- Exclua o arquivo anterior.
- Verifique os processos em execução.
- Filtre a lista por caminho que contém palavras específicas (Programa) que assume que todos os programas estão instalados emArquivos de ProgramasouArquivos de programa (x86)
- Obtenha os caminhos absolutos para executáveis de processos que foram encontrados
- Escreva caminhos para o arquivo temporário no diretório temporário.
- Mova o arquivo temporário para o diretório de destino que é a pasta de inicialização do usuário.
Prós:
- Escrito em PowerShell para que o código seja nativo e funcione no Windows Vista e superior.
- Funciona.
Contras:
Os programas instalados em outro caminho - não em arquivos de programas - não serão selecionados nesta versão. É claro que isso é necessário para evitar iniciar processos nativos do Windows, como explorer.exe e assim por diante. No entanto, se você tiver um caminho como
D:\Apps
onde você também instala programas, poderá modificar a linha$_.Path -match "Programa"
para
$.Path -match "Programa" -ou $.Path -match "D:\Aplicativos"
e funcionará da mesma forma.
Agora o código do script:
###############################
# AUTOMATIC STARTUP GENERATOR #
# ASGEN v.1.0 by mnmnc @ 2014 #
###############################
# VARIABLES
# CURRENT PATH
$current = $(pwd).ToString()
# DESTINATION PATH
$destination_path = "$env:userprofile\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\programs.bat"
# MOVING TO TEMP
cd $env:systemroot\Temp
# REMOVING OLD FILE
del $destination_path
# EMPTY ARRAYS
$arr_names = @()
$arr_paths = @()
# FILLING ARRAYS
Get-Process | Where-Object {$_.Path -match "Program" } | foreach { $arr_names += $_.Name; $arr_paths += $_.Path }
# CREATING FILE
for($i = 0; $i -le $arr_names.count -1; $i++)
{
$out = "`"" + $arr_paths[$i] + "`""
write-output $out | out-file "programs.bat" -append -Encoding ascii
}
# INFO
Write-host "`nFolowwing programs will be started on next boot:`n"
cat programs.bat
Write-host "`n"
# MOVING TO STARTUP FOLDER
mv programs.bat "$destination_path"
# RETURNING
cd $current
exit
Simplesmente copie este código e cole-o no arquivo shutdown.ps1
em sua área de trabalho. Salve e feche este arquivo. Agora crie um segundo arquivo shutdown.bat
e coloque o código
powershell shutdown.ps1
shutdown -s -t 1
neste arquivo. Salve e feche o arquivo bat. Agora você pode mover os dois arquivos para o diretório preferido. Depois disso, você pode clicar Right Mouse Buttonem um arquivo bat e criar um atalho para esse arquivo. Em seguida, clique Right Mouse Buttonem umatalhodesta vez e escolhaFixar no menu Iniciar. Isso adicionará o atalho ao menu Iniciar.
Agora, sempre que quiser fechar o PC e salvar os programas em execução para uma inicialização automática após a inicialização, você pode usar este atalho.
Editar-Incluindo argumentos de linha de comando
Como você também gostaria de salvar os argumentos da linha de comando do processo, você deve alterar as seções Preenchendo matrizes e Criando arquivo para estas:
# FILLING ARRAYS
Get-WmiObject Win32_Process | Where-Object { $_.Path -match "Program" } | foreach { $arr_names += $_.Name; $arr_paths += $_.CommandLine; }
# CREATING FILE
for($i = 0; $i -le $arr_names.count -1; $i++)
{
$out = $arr_paths[$i]
write-output $out | out-file "programs.bat" -append -Encoding ascii
}
A mudança é usar o WMI agora em vez do get-process. Além disso, as aspas devem ser omitidas desta vez.
Perceber
Caso você tenha um erro ao executar o script, provavelmente você tem uma configuração incorreta para a política de execução do PowerShell. Para alterar isso, você deve abrir o console do PowerShell como administrador e digitar Set-ExecutionPolicy Unrestricted
e digitar Y
quando solicitado para confirmar. É isso. Deve funcionar bem.
Responder3
Outra opção é extrair links para o software para iniciar na pasta 'Inicialização' no menu Iniciar - é lento, mas funciona. Porém, ele não abre os programas abertos 'anteriormente', apenas um conjunto predefinido.