How do I know what will change on my Windows computer before I run a program?
I want to see the registry changes which will take action, which files are going to get changed, which new files are going to be added, etc
That's not possible:
If you analysed the .exe program and knew what system calls it can make you would have to give it all possible inputs to predict what would happen when it was run.
There is an infinite number of possible inputs (consider just the simple case of typing random characters into a text file, there are millions of possible combinations).
In the particular case of "which new files are going to be added" nothing can know in advance the filename you are going to give the program to save a file.
The best you can do is run the program (maybe in a sandbox) and monitor the changes as they happen.
There are a number of possibilities for this monitoring. The most useful is probably Process Monitor as it provides lots of information that can be logged.
FolderChangesView is a simple tool that monitors the folder or disk
drive that you choose and lists every filename that is being modified,
created, or deleted while the folder is being monitored.
You can use FolderChangesView with any local disk drive or with a
remote network share, as long as you have read permission to the
selected folder.
ProcessActivityView creates a summary of all files and folders that
the selected process tries to access. For each file that the process
access, the following information is displayed: Number of times that
the file was opened and closed, number of read/write calls, total
number of read/write bytes, the dll that made the last open-file call,
and more...
![enter image description here](https://i.stack.imgur.com/juYLY.gif)
Process Monitor is an advanced monitoring tool for Windows that shows
real-time file system, Registry and process/thread activity.
It combines the features of two legacy Sysinternals utilities,
Filemon and Regmon, and adds an extensive list of enhancements
including rich and non-destructive filtering, comprehensive event
properties such session IDs and user names, reliable process
information, full thread stacks with integrated symbol support for
each operation, simultaneous logging to a file, and much more.
![enter image description here](https://i.stack.imgur.com/xN5SU.png)
Process Explorer shows you information about which handles and DLLs
processes have opened or loaded.
The Process Explorer display consists of two sub-windows. The top
window always shows a list of the currently active processes,
including the names of their owning accounts, whereas the information
displayed in the bottom window depends on the mode that Process
Explorer is in: if it is in handle mode you'll see the handles that
the process selected in the top window has opened; if Process Explorer
is in DLL mode you'll see the DLLs and memory-mapped files that the
process has loaded.
![enter image description here](https://i.stack.imgur.com/Jc8Pb.jpg)
Disclaimer
I am not affiliated with Nirsoft or SystemInternals in any way, I am just an end user of their software.
Here is a procedure for starting the synchronization (tested on MS Windows 10 v. 1903) with a command:
(1) Start mobsync.exe and click the Schedule action which starts the Offline Files Sync Schedule wizard where you can create a new sync schedule which will run just once or repeatedly.
![enter image description here](https://i.stack.imgur.com/3y2hg.png)
(2) After you save the schedule under a name, e.g. "My Offline Files Sync", a new task gets created in Windows Task Scheduler at the following location:
\Microsoft\Windows\SyncCenter\ your user SID \ task id
(3) Find that task in the Task Scheduler and from the General tab copy the task name and the task ID, i.e. the last part of the task location including the curly brackets { and }.
(4) Now you can start the synchronization with the following command:
mobsync.exe /Schedule="task name","task id"
e.g.
mobsync.exe /Schedule="My Offline Files Sync","{750FDF10-2A26-11D1-A3EA-080036587F03}"
In order to run the command in PowerShell you can use the following syntax:
& mobsync.exe --% /Schedule="My Offline Files Sync","{750FDF10-2A26-11D1-A3EA-080036587F03}"
Best Answer
No.
Unfortunately Windows does not log the files that are modified as part of a synchronization operation.
You are alerted to files that fail to sync, which results in partial exposure to files that are involved in sync operations, but obviously this falls short of your stated request.
While I've not personally done so, you could enable audit logging, but this approach can impact I/O performance and generate a lot of logged events unrelated to sync operations.