Auditing who changed what in Windows

Share
A Windows laptop sits open on an office desk.

If you need to figure out who most likely changed a file, setting, or system behavior on Windows, start with the clues Windows already leaves behind: timestamps, ownership, recent activity, and logs. You usually won’t get a perfect “this person did it” answer from one place, but you can often narrow it to one account or a very short list. The practical question is which account had the right session, access, and timing before the trail goes cold.

What you need before you start checking

  • The file, folder, setting, or behavior that changed, with the exact path or setting name if you have it.
  • The approximate time window when the change happened, even if it’s only “sometime after lunch.”
  • The Windows machine involved, including whether it’s a local PC, a server, or a remote desktop session.
  • The accounts that could have been involved, including admin accounts, shared accounts, and service accounts.
  • Your access level on the machine. Reading event logs and some security details usually needs admin rights.

Before you inspect anything, collect the basic facts so you can tie clues back to one change event instead of chasing noise.

If you’re investigating a file, avoid opening, copying, or editing it until you’ve noted what you can from the original state. If the issue is a setting or policy, note the current value exactly as you found it before you change anything back.

If you can, write down who was logged on, what machine they used, and whether the change happened on a local console, over Remote Desktop, or through a management tool. That context helps later when you compare likely users.

Start with the obvious clues Windows already gives you

Begin with the simplest evidence: timestamps, ownership, and the surrounding context. These clues rarely prove who made the change by themselves, but they often tell you where to look next.

For a file or folder, check the modified time, created time, and access time if that timestamp is still being updated on the system. The modified time tells you when the content last changed. The created time can be misleading if the file was copied, so don’t treat it as proof of authorship. If the owner is a specific user, that can help, especially when ownership changed around the same time as the content.

In File Explorer, right-click the item, open Properties, and check the Security tab for the owner. For more detail, use PowerShell:

Get-Item "C:\Path\To\Item" | Select-Object FullName, CreationTime, LastWriteTime, LastAccessTime
PowerShell

If the change is inside an app folder, config directory, or profile path, look at which user profile owns the surrounding files and which profile folders have recent timestamps. For settings, compare the exact setting path or registry location against the account currently logged on to the machine. A change made while one user was active on the console is more likely to belong to that user than to someone who logged in hours later.

Also check recent activity clues: recently opened documents, recent files in the app, browser history if the change came from a web-based admin portal, and the folder where the change happened. These clues are weak on their own, but together they often point to one account that was active at the right time and in the right place.

A Windows laptop screen shows file properties in a folder window.

Use sign-in times to rule people in or out

Once you have a rough change window, compare it with sign-in activity. The goal is not to prove guilt from a login alone. It’s to rule out accounts that could not have been present, then focus on the ones that could.

Start with local sign-in evidence. If you have access to the machine, check the current logged-on user and any active or disconnected sessions. On servers or shared machines, another user may still have a session open long after they stopped working.

query user
Command Prompt

If you need a broader view, Event Viewer can show logon and logoff activity. On many systems, Security log events for successful logons are useful for matching a user to a time window, especially interactive and remote logons. Compare the time of the change with the time the user signed in, locked the session, unlocked it, or disconnected from Remote Desktop.

Use the login records to narrow the list, not to settle the question too early. A user may sign in once and keep working without leaving a fresh log entry for every action, so the useful question is often, “Who had an active session near the time of the change?”

If two users are possible, compare their normal access patterns. The account with the right group membership, app access, shared drive access, or management tool access is a better fit than a user who had to take unusual steps to reach the location where the change happened. Location matters too: a change made from the console, from Remote Desktop, from a jump box, or from a management server leaves a different trail, and the account that normally uses that route is usually the stronger match.

A Windows laptop sits at a desk with the login screen open.

Check event logs when you need stronger evidence

When timestamps and sessions aren’t enough, the Windows logs can give you a tighter link between an account and a change. The exact event depends on what changed and how auditing is configured, so look in the logs that match the type of action.

Start in Event Viewer and check the Security log for sign-in activity and any object access auditing that may have been enabled. If file or folder auditing was turned on ahead of time, you may find events that show which account touched the object. If registry or policy auditing was enabled, those logs can show the account behind a setting change. For system behavior changes, also check Application, System, and Windows-specific logs from the feature or service involved.

If you’re using PowerShell, the Windows Event Log tools can help you search faster. For example, you can search the Security log by time or event ID, then match the result against the suspected account:

Get-WinEvent -FilterHashtable @{LogName='Security'; StartTime=(Get-Date).AddDays(-1)} | Select-Object TimeCreated, Id, ProviderName, Message
PowerShell

What you’re looking for is a chain, not a single record. A good chain might look like this: the user signed in, accessed the folder, made a change, and then disconnected. If you see only a sign-in with no matching object-access evidence, say so clearly. That means the logs support presence, not direct authorship.

If auditing was not enabled before the change, you may still get useful support from service or application logs, but they often point to the account used by a process rather than the human who started it. In that case, note the process name, service name, or task name if the logs expose it, because that is often the only reliable link you’ll have.

A Windows laptop displays an event log window on the screen.

Don’t let shared machines mislead you

Shared systems create the biggest mistakes in this kind of investigation. A file or setting may look like a user change when it was really made by a service account, a scheduled task, or a remote admin session.

Watch for these traps:

  • Shared admin accounts. The log only tells you the account name, not which person used it.
  • Background services. A change at an odd hour may come from software updating, sync tools, backup jobs, or endpoint management.
  • Scheduled tasks. A script can edit files or registry keys long after the person who created it logged off.
  • Remote sessions. A user may have been connected through RDP, a remote management console, or a jump box, which can shift where the activity appears to come from.
  • Profile switching on shared PCs. The user shown on the lock screen is not always the user who last changed something.

If a service account is involved, check which application owns it and whether the timing matches a regular job window. If a shared admin account is involved, you may only be able to identify the account, not the individual human. In that case, the next step is to correlate with jump host logs, management platform logs, or ticket records so you can reconstruct who used the shared credential at that time.

Be cautious about assuming the last person who logged on made the change. On a busy machine, that assumption is often wrong.

Write down what you found and decide the likely user

Turn the clues into a short, defensible record while the details are still fresh. The point is to make your reasoning easy to follow later, even if someone else picks up the case.

Write a short summary with these parts:

  • What changed, including the file path, setting name, or system behavior.
  • The approximate time window of the change.
  • The accounts that were plausible.
  • The clues that support the most likely account.
  • The clues that weaken that conclusion or leave uncertainty.

A simple format works well:

“Between 14:20 and 14:45, DOMAIN\jdoe is the most likely account to have changed C:\Shares\Finance\budget.xlsx. The file’s last-write time matches that window, query user showed jdoe in an active session on the machine, and Security log entries place the same account on the system before the change. I could not confirm direct object access because file auditing was not enabled before the event.”

That kind of note is useful because it separates fact from interpretation. If you later find better evidence, you can update the conclusion without rewriting the whole chain.

What if the clues don’t point to one person?

Sometimes the answer is only the account, not the human. Sometimes the logs are missing or the timestamps no longer help. In those cases, say exactly what you can support and stop there.

If logs were overwritten or never enabled, rely on the remaining evidence: file times, ownership, open sessions, app logs, and surrounding activity. If multiple users were active in the same session, list each one and explain why each is or isn’t a fit. If a shared account was used, note that the account is identifiable but the person is not.

If timestamps were changed or the file was copied from another system, treat the created time and modified time as advisory, not proof. If a sync client or backup tool touched the item, the account tied to the process may not be the person who intended the change.

When you cannot narrow it further, your best answer is a qualified one: the most likely account, the evidence that supports it, and the reason you can’t go beyond that. That is still a useful finding, especially if someone needs to decide whether to reset a password, review admin activity, or pull logs from another system before they disappear.

Conclusion

If you need to keep going after this, preserve whatever logs and timestamps you still have, then compare them with sign-in records from nearby systems such as domain controllers, remote access gateways, or management tools. If the same account keeps appearing across those records, you’ve probably narrowed the case as far as Windows alone can take you. If it doesn’t, document the gap clearly so the next person knows exactly what evidence is missing and where to look next.

Frequently Asked Questions

Can Windows tell me exactly which person changed a file?

Sometimes, but not reliably from built-in clues alone. Windows often gets you to an account, session, or process. If the account is shared, you may not be able to name the individual without outside records like jump host logs or ticket history.

What if the file timestamps were changed or copied?

Then treat the timestamps as one clue, not proof. Copying a file can reset creation time, and some tools can preserve or alter metadata. Use the timestamps together with ownership, session activity, and logs.

What if auditing was not enabled before the change?

You may still find supporting evidence in sign-in logs, app logs, service logs, or remote access records, but you probably won’t get direct object-access proof from Windows after the fact.