2016 et toujours rien de la part de Microsoft... J'ai décidé de faire un essai avec vbscript
. Ce n'est pas génial, mais cela permet de relancer tous les programmes et dans certains cas, c'est même Windows.
Le premier script enregistre tous les processus dans un fichier texte dans le dossier spécifié (bureau) et tous les noms de fenêtres dans un fichier séparé. Le second script lit et lance tous les processus à partir du fichier écrit par le premier script. Les deux doivent être enregistrés avec l'extension .vbs. De plus, l'enregistrement des noms de fenêtres nécessite l'installation de Microsoft Word (Ne demandez pas ).
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
Je n'ai pas encore trouvé le moyen d'obtenir de manière programmatique les chemins d'accès aux fichiers que user78017 copie à chaque fois qu'il redémarre. J'aimerais savoir pour quels programmes ce script ouvre à nouveau tous les fichiers ouverts et pour quels programmes il ne le fait pas. Si quelqu'un a envie de nettoyer ce code, n'hésitez pas à modifier le post.
0 votes
En fait, je me souviens avoir lu quelque part que Win7 était censé disposer d'une fonctionnalité de ce type, mais je suppose qu'ils n'ont pas pu la mettre au point à temps pour la sortie. Il se peut donc qu'elle soit disponible à l'avenir.
1 votes
La commande "shutdown /g" semble pouvoir être couplée à la fonction de récupération automatique des pannes d'un programme pour réaliser 75 % de ce que je recherche. Je vais devoir faire d'autres tests pour voir si cela fonctionne.
1 votes
La commande shutdown ne fonctionne pas vraiment comme espéré... ce dont j'ai vraiment besoin est un moyen de surveiller les fichiers actuellement ouverts. Ensuite, je peux simplement construire un script dynamique pour relancer ces fichiers.
1 votes
6 ans plus tard et ce n'est toujours pas une fonctionnalité de Windows... OSX l'a depuis des années !
0 votes
7 ans et plus.....