Inicie o Windows com programas abertos anteriormente

Inicie o Windows com programas abertos anteriormente

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.

Projeto Github aqui.

Versão com captura dos argumentos do processo também.

As ações realizadas:

  1. Exclua o arquivo anterior.
  2. Verifique os processos em execução.
  3. 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)
  4. Obtenha os caminhos absolutos para executáveis ​​de processos que foram encontrados
  5. Escreva caminhos para o arquivo temporário no diretório temporário.
  6. 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:\Appsonde 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.ps1em sua área de trabalho. Salve e feche este arquivo. Agora crie um segundo arquivo shutdown.bate 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 Unrestrictede digitar Yquando 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.

informação relacionada