Windows版本WireGuard的配置文件存放在哪里?

先放答案:
C:\Windows\System32\config\systemprofile\AppData\Local\WireGuard\Configurations

WireGuard是个很方便的VPN软件,用来连接家里的网络非常顺手,几乎没有障碍,而且官方更新也很频繁,最近也把Windows版做了出来,使用起来很稳定。

最近升级了Windows10到1903版本,但是升级完后发现WireGuard的配置不见了。这个配置文件我也没有保存一份,而且重新生成配置还要改好几个地方的密钥,很麻烦。

Windows在大版本升级后,将原系统文件放到了Windows.old文件夹中,尝试搜索配置文件名,没有找到。然后无意间看到WireGuard界面的Log中有一条"Not migrating configuration from 'C:\windows.old', as it is not explicity owned by SYSTEM, but rather 'S-1-5-32-544'",基本可以说明配置在那个备份文件夹中还是有的。

但是WireGuard把它的配置放在了哪里?我新建了一个配置,然后尝试Program Files,AppData Local等目录,均没有找到。于是去Github看其源码,在项目中通过关键词"migrating""configuration"很容易找到相关代码,最后看到WireGuard确实是将配置文件存放在%APPDATALOCAL%\WireGuard中。猜测权限的问题,尝试从Admin权限的PowerShell进入,提示目录不存在,各种尝试均失败,百思不得其解。

想到WireGuard可能使用高权限用户启动,那是不是用户名不是当前登录的用户名呢,通过Task Manager看到WireGuard有两个进程,一个用户名为当前登录用户名,另一个是SYSTEM,但是Users目录底下并没有SYSTEM目录,更别提再下面的AppData目录了。

Windows不按套路出牌的事不是一件两件了,上网搜索SYSTEM用户的AppData目录在哪里,搜到一篇文章指出System用户的AppData目录在C:\Windows\System32\config\systemprofile\AppData\Local或者C:\Windows\SysWOW64\config\systemprofile\AppData\Local下面,一试果然就是,途中会确认两次权限,进入后看到了WireGuard目录,再下面有Configurations目录,配置文件就在里面,后缀名为.conf.dpapi。终于明白了,赶紧去windows.old目录下,找到之前的配置文件,拷到当前的目录里,再启动WireGuard,配置文件又回来了。