web-dev-qa-db-ja.com

Windowsの再起動イベント後に開いているソフトウェアを復元する

長い一日の終わりに、私は時々多数のプログラムを実行していることがわかりました。明日使うのに必要なものすべて。通常、これは問題ではありません。マシンをロックして明日戻ってくるだけです。私の問題は、Windows Updateが真夜中に起動し、コンピューターを強制的に再起動すると発生します。これにより、私の開いているソフトウェアがすべて閉じられます。もちろん、すべてを定期的に保存するので、何も失うことはありませんが、再起動するたびにこれらのリソースをすべて再開するのに時間を無駄にします。

[編集]

アップデートがダウンした場合でもコンピュータを再起動できるようにしたいことを明確にする必要があります。再起動を防止しても、問題が遅れるのは遅れるだけです。何らかの理由で再起動後に自分の作業環境を回復できるようにしたいという点で、もっと具体的だったはずです。予定されたメンテナンス、停電、アップデート、ソフトウェアのインストールなど。

[編集]

これらのファイルは週ごとに変わるため、起動時に起動するように設定することはできません。そのため、開いているものを監視し、再度ログインしたときに、それらのソフトウェアセッションを「回復」するオプションを提供するものが必要です。

誰か私にできることについて何か提案はありますか?それが唯一の選択肢である場合、私はこれを行うためのソフトウェアを購入してもかまいません。

ありがとう

36
Doltknuckle

それは非常に煩わしいので、この問題に対するエレガントな解決策はまだありません!

それは私たち全員に起こります:Windowsはひどく止まるまで遅くなります(クロムで開かれた通常の132のタブ、Firefoxで開かれた57のタブ、合計24のウィンドウが開かれているため、何らかのメモリリークが原因で複雑になります仕事の上で、仕事の上で仕事をしているときに、それらすべてを同時に含む操作です。そして、それはとても遅くなるので、実際に時間を浪費し始めます。 待っている コンピューターで何かが起こるように.....だから、過去5週間にわたってゆっくりと構築されてきたセッションをリセットし、最後に、複雑なウィンドウのウィンドウと開かれたファイルとエクスプローラーを再作成する悪夢に屈するフォルダ、恐ろしいウィンドウが再起動した後。

上手。

私はそれを悪夢にしないエレガントな解決策を探すために多くの時間を費やしてきました、そしてこれが私の結論であり、私の現在の「解決策」です。

私が見つけたプログラムは1つだけで、プログラムとそれらが開いていたファイルの両方を保存および復元できます。そして、ほとんどの場合、それは本当にスムーズです。 Twinsplay(Professional Edition) です。 ( CacheMyWorkSmartClose はどちらもプログラムのみを復元し、ファイルは復元しません。)

ただし、Twinsplayにはいくつかの実際の問題と警告があります(また、40ドルかかるフリーウェアではありません)。

  1. Firefoxを復元すると、内部のすべてのタブが複製されるようです。Firefox内に何をロードしたかを記録するようにコード化する必要があります(各タブがすべてのWordファイルを忠実に復元する方法のような「ファイル」であるかのように)。以前のセッションのタブを開くように既にFirefoxを設定していて、100個のタブを開いていた場合、200個のタブをロードしようとするため、通常は災害になります。また、タブを乱雑に混乱させます!! (ありがたいことに、元のタブの最後のタブの後から開始して、少なくとも重複するタブを独自の「グループ」に保持しますが、どちらのタブグループも順序が乱れているため、元のタブの順序を混乱させます)。これと同じ問題がChromeで発生することは間違いありません.....私はそれをテストしませんでした(あえてしませんでした!)。

  2. その他の問題:通常、複数のファイルを開いている可能性のあるプログラム(Word、Photoshop、InDesignなど)の場合:何らかの理由で、最初のファイルをプログラムにロードしているときにダイアログボックスが表示された場合(マクロエラー、またはInDesignでは、最初のドキュメントに画像リンクがありませんでした)その後、Twinsplayはすべてのファイルをプログラムに一度にロードするため、最初のドキュメント以降のすべてのドキュメントを開くことができません。また、Twinsplayは、UIのどこにも保存されたセッションからのファイルのリストを表示しない(また、Appdataのログ/構成ファイルにもチェックした)ため、このシナリオが発生した場合、おそらくInDesignの5番目のファイルを忘れてしまいます。 4週間前に作業していて、まだ終了する必要があります!

SO:私がこの後にやっていることは、次のとおりです。

タスクバーで開いている各ファイルを調べ、そのファイルパスをコピーします(これは、ウィンドウのダイアログとメニューとキーボードショートカットの使い方を知っていれば、かなり簡単に実行できます)。スポットしたり、特定のものを強調表示したりした場合は、10分後に忘れないように注意します。 ここにあります 意味のダミーの例。

次に、再起動後、各ファイルのパスをWindowsエクスプローラーのアドレスバーに貼り付けて、関連するプログラムと共に、一度に1つずつ各ファイルを開きます。関連するプログラム(PhotoshopのTIFFなど)で実際にファイルが開かれていない場合は、そのことを覚えておいてください。

-

今。私のソリューションはそれほど悪くはありませんが、開いているすべてのファイルのファイルパスをコピーするにはまだ時間がかかります。

すべてのウィンドウのファイルパスとプログラムパス( "C:\ photoshop.exe" "C:\ image.TIFF")を一度に出力するツールを用意し、その情報をバッチスクリプトに入れることが理想的です。必要に応じて、各ファイルを、それが含まれていたプログラムで1つずつ、または同じバッチで一度にすべて開きます。それは完璧でしょう。

スピードアップするために、すべてのアクティブウィンドウの開いているファイルのファイルパスをコピーする方法はありますか?現在のすべてのタスクバーアイテムのファイルパスを吐き出す小さなツールは、非常に簡単なはずです。 Twinsplayがそれを行うことができる場合、明らかにそれは何とかして行うことができます.....別の投稿 here でこの質問をしました。 thiscode できますか?

マイクロソフトはエレガントなOSレベルのワンクリックソリューションを提供していないので、 私たちは試みるべきではありません サードパーティアクセスまたは単なる例を使用した、聖杯のような休止状態のようなセッション復元方法です。 hibernate cache reloading hacks などをいじくり回します。

ウィンドウの再起動は、RAMを消去し、すべてをフラッシュするのではなく、すべてを保持するためのリフレッシュであると考えられています。そのため、手動でファイルを再度開くことをお勧めします(詳細をいくつか書き留めます)特定のファイルのどこにいるのか)ですが、これは可能な限りエレガントにしています。

16
user78017

CacheMyWork というプログラムを使用していると聞いています。開いていたアプリは再度開きますが、作業中のファイルは開きません(プログラムにそのような機能がない場合)。

別のオプションは、仮想マシンでアプリを実行できるという問題を回避できることです。その後、家に帰ると、仮想マシンを一時停止して、仮想マシンの状態をディスクに永続化できます。次に、戻ったときに仮想マシンを再開します。いつか仮想マシンのOSを更新/パッチする必要があるため、これは問題を回避します。また、おそらくパフォーマンスに影響を与えます(どのくらいの規模かは、何をするかによって異なります)。

物事を開いたままにし、マシンをパッチから再起動することになると、私はあなたと一緒にいます.

6

2016年もまだMicrosoftからは何もありません... vbscriptで試してみることにしました。それは素晴らしいことではありませんが、すべてのプログラムを起動し、場合によってはウィンドウを起動します。

最初のスクリプトは、すべてのプロセスを指定したフォルダー(デスクトップ)内のテキストファイルに保存し、すべてのウィンドウ名を別のファイルに保存します。 2番目のスクリプトは、最初のスクリプトによって書き込まれたファイルからすべてのプロセスを読み取り、起動します。どちらも拡張子.vbsで保存する必要があります。また、ウィンドウ名を保存するには、Microsoft Wordがインストールされている必要があります(質問しないでください。)。

On Error Resume Next
Dim session, folder, Word, Tasks

Set Word = CreateObject("Word.Application")
Set Tasks = Word.Tasks

' folder is the folder in which the files will be created. Can also be instantiated by hardcoding a path
folder = getPathOfFolder("Desktop")
' The second argument of the function call (session.txt) is the filename of the file containing all window names
Set sessionFile = CreateFileAt(folder, "session.txt")

for Each Task in Tasks
    if Task.Visible Then
        sessionFile.WriteLine(Task.Name)
    End if
Next
sessionFile.Close
Word.Quit

' The second argument of the function call (processes.txt) is the filename of the file containing all processes
Set processesFile = CreateFileAt(folder, "processes.txt")
set processesList = getAllProcesses()

for Each Process in processesList
    processesFile.WriteLine(Process.CommandLine & "")
Next

processesFile.Close
MsgBox("Done!")




Function getPathOfFolder(path)
    ' Dim objShell As Object
    ' Dim strPath As String

    Set objShell = Wscript.CreateObject("Wscript.Shell")
    Path = objShell.SpecialFolders(path)
    getPathOfFolder = Path & "\"
End Function

Function CreateFileAt(filePath, fileName)
    Dim fso, session
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set session = fso.CreateTextFile(filePath & fileName, true)
    Set CreateFileAt = session
End Function

Function getAllProcesses()
    Const Computer = "." 
    Dim WMI, ProcessList
    Set WMI = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2")
    Query = "Select * FROM Win32_Process"
    Set ProcessList = WMI.ExecQuery(Query)
    Set getAllProcesses = ProcessList
End Function

On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile(getPathOfFolder("Desktop") & "processes.txt", 1)

Do While file.AtEndOfStream = False
    Set Shell = CreateObject("Wscript.Shell")
    Shell.Run(file.ReadLine)
Loop

MsgBox("Done!")

Function getPathOfFolder(path)
    ' Dim objShell As Object
    ' Dim strPath As String

    Set objShell = Wscript.CreateObject("Wscript.Shell")
    Path = objShell.SpecialFolders(path)
    getPathOfFolder = Path & "\"
End Function

私は、user78017が再起動するたびにコピーするファイルパスをプログラムで取得する方法をまだ見つけていません。このスクリプトにより、開いているすべてのファイルが開かれるプログラムと、開かれないプログラムについて教えてください。誰かがこのコードをクリーンアップしたい場合は、自由に投稿を編集してください。

4
Fr4nc3sc0NL

今日RSSフィードでこれを手に入れました:

CacheMyWorkは、作業で場所を失うことなくWindowsを再起動できる便利なユーティリティです。現在開いているアプリケーションのチェックリストを作成し、次にコンピューターにログオンしたときに、選択したアプリケーションを再起動します。

ソース

1
Steiv

私は同じ問題を抱えています。再起動後、通常使用しているすべてのプロセスを少なくとも30時間再起動します。
起動前の状態に戻ることができるユーティリティが1つ見つかりました Slimbrowser 。もっと心から愛したい。

0
Dave