【问题标题】:Get the config folder of a third-party Click-Once application获取第三方 Click-Once 应用程序的配置文件夹
【发布时间】:2015-02-12 14:22:58
【问题描述】:

目前我正在使用 Click-Once WPF 应用程序。该应用程序是一些不是我开发的第三方应用程序。我也无权访问它的来源。

它通过执行相应的*.appref-ms 链接在Windows 服务器上定期自动运行(使用标准C++ 编写的自制启动器),该链接在安装应用程序时放置在开始菜单路径中。这很好用。

由于该应用程序会定期出现问题,我的启动器需要在启动之前擦除所有配置文件,以便始终获得明确定义的运行。这些文件放置在应用程序的文件夹之一中。其设置的配置路径如下所示(我通过手动搜索 AppData 树找到它):

C:\Users\<UserName>\AppData\Local\Apps\2.0\Data\WM4WPKCW.P5Z\67QVXD6C.0NT\<app>_f6187a2321850a68_0003.0004_1a67f9f1633c43fc\Data\AppFiles\

请注意,此配置路径与应用程序路径(使用不同命名的文件夹)完全不同:

C:\Users\<User>\AppData\Local\Apps\2.0\5HN2CKMO.MPL\YOL20MYR.O8L\<app>_f6187a2321850a68_0003.0004_f6ab8c93b3a43b7c\

由于每次更新 Click-Once 应用程序时此配置路径都会更改,因此我需要通过代码(最好是 C++)自动找到它。不幸的是,我想不出办法来做到这一点。

如何让我的启动器根据其*.appref-ms 文件找到 Click-Once 应用程序的配置路径?

【问题讨论】:

  • 配置文件是如何生成的?如果它们是自动生成的,似乎有一个 API 可以获取位置......
  • 对于 Click-Once 应用程序本身,这肯定没有问题。但对于外部进程来说,这是完全不同的事情。
  • 没有.net 有一些环境的东西。如果不是,那么只需进入 Windows api 级别。获取模块文件名。
  • 这是什么“可执行文件的路径被混淆了”,这是什么意思
  • @Alf:路径名由来历不明的十六进制数字组成,没有 API 可以获取它们

标签: c++ .net wpf path clickonce


【解决方案1】:

来自Raghavendra Prabhu’s blog entry “Client Settings FAQ”:

” 如果您想以编程方式获取路径,可以使用配置管理 API 来实现(您需要添加对 System.Configuration.dll 的引用)。例如,以下是获取本地 user.config 文件路径的方法:

Configuration config =  
    ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
Console.WriteLine("Local user config path: {0}", config.FilePath);

代码是 C#(显然),但转换为 C++/CLI 应该不难。

Raghavendra Prabhu 进一步写道:

” 如果您出于某种原因需要将设置存储在不同的位置,推荐的方法是编写自己的SettingsProvider。这实现起来相当简单,您可以在 .NET 2.0 SDK 中找到演示如何执行此操作的示例。但请记住,您可能会遇到上述相同的隔离问题。

免责声明:我没有测试过这些。

【讨论】:

  • 我不是 Click-Once 应用程序的开发人员。我编写了一个 C++(非 CLI)启动器来启动一些第三方 Click-Once 应用程序。我的启动器唯一知道该第三方应用程序的是 *.appref-ms 文件路径。现在我需要一种方法来仅使用该 *.appref-ms 文件来查找实际的 Click-Once 应用程序路径。我的问题是否不清楚,或者您的回答对我有帮助吗?
  • 我编辑了我的问题。抱歉没有问清楚。我想知道我是否应该用改写后的文字开始一个新问题。
  • 哦,对不起,我有时会有点厚。没看到它是第 3 方应用程序。无论如何,我认为值得发布上述信息,因为它对通过谷歌到达这里的人很有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-28
  • 1970-01-01
  • 1970-01-01
  • 2013-07-07
  • 2020-05-31
  • 1970-01-01
相关资源
最近更新 更多