服务设置

Service settings

我有一个用 VB 编写的服务,其中包含一些用户设置。其中两个是 oauth 访问/刷新令牌,我需要继续存储新令牌,所以每当它更新时,我都会再次写下设置。

谁能告诉我这些设置存储在我的电脑上的什么位置?我可以看到 app.exe.config 文件没有更新,启动服务时也没有读取它。我在 users\username\appdata\local 中没有用于服务名称的文件夹,在漫游中也没有,在 locallow 中也没有。

我尝试使用 installutil 卸载并重新安装我的服务,希望这可能会导致它使用 app.exec.config 中的设置,但它没有,它仍在尝试使用一个早已过时的令牌来自某处的日期。

如果我将一个新的令牌对粘贴到我的 app.exe.config 中,我可以看到服务没有读取它。它正在读取我上次使用它/测试它时的旧令牌,并收到过期错误,因为我在应用程序的桌面测试版本中使用了新令牌对。

我似乎在兜兜转转,试图找到这些设置的存储位置。烦人的是我已经让它工作了,“有时”它会选择新的令牌并且一切正常。但是我很快就需要将它安装在客户的 PC 上,我担心我会在使用旧令牌并且无法更新它们的情况下度过另一个毫无结果的早晨。我确定这是我不明白的事情,但如果没有必要,我宁愿不将它们存储在本地文件中。此处出现的第一个答案表明其他人也有类似的问题,并且通常求助于他们自己的存储或注册表,但这是一个 11 年前的答案。我正在使用 VS 2019,如果这有什么不同的话。

这是我用来存储新令牌的代码,如果有帮助的话:

My.Settings.RefreshToken = newToken ' this is returned in the refresh request
My.Settings.Save

当我的代码打开时,它以类似的方式加载设置:

accessToken = My.Settings.AccessToken
refreshToken = My.Settings.RefreshToken
tokenExpires = My.Settings.Expiry

即使我编辑我的 app.exe.config 文件以在到期字段中包含“*”,它仍然以某种方式从上次服务成功 运行 中找到到期 date/time .所以它显然不再从该文件中检索信息。

要关闭它,@Jimi 早些时候发表的评论是关键。服务更新的设置存储在一个名为 user.config 的文件中,在我的例子中是 c:\windows\syswow64\config\systemprofile\appdata,然后是我的应用程序名称。