如何将 AddReg 部分合并到 Compact Framework 应用程序的配置文件中?

How can I incorporate an AddReg section into a config file for a Compact Framework app?

我正在尝试更新 Windows CE / Compact Framework 应用程序中的注册表值。

我可以在 .NET 4.5 中做我想做的事,但是 .NET 3.5 缺少一些这样的部分(特别是 RegistryView OpenBaseKey;好奇的人可以仔细阅读所有血淋淋的细节)。

另一种可能性是随应用程序一起发送 *.reg 文件并通过 ShellExecuteEx() 调用它,但这对我来说似乎有点 Rubegoldbergish。

另一种可能性是 use P/Invoke,但这似乎是改良的霍布斯主义(肮脏和野蛮,但不短(在这种情况下短会更好))。

所以...我 做了 终于找到了一些看起来几乎是 eurekaphoric 的选项。根据 Andy Wigly 在他的书“Microsoft .NET Compact Framework”(1879 年左右印刷)中所说,您可以通过配置文件添加或操作注册表值。当应用程序部署到设备上时,此配置文件似乎嵌入在 a/the cab 中。引自书中:

"*AddReg *
Defines the name of the section of the configuration file for adding entries to the registry; ..." (p. 211)

-和:

"*Description of the AddReg Section*
The *AddReg* sections are optional sections of the configuration file. These sections are defined by the *AddReg* key under the *DefaultInstall* section of the configuration file. Each section defines the registry keys, and values are added to the registry when your application is installed. For more information, see the device's SDK (p. 213)

但是什么 配置文件在这里被如此肆无忌惮地吹嘘?我找不到他备份的位置并提供有关它的基本信息。

好的,我可以尝试找到 "the device's SDK"(它们是安装此应用程序的摩托罗拉 3090/3190 设备),但我希望有人知道他在说哪个配置文件,以及需要什么条目看起来像。

我们有这个应用程序的单独安装应用程序,我在其中搜索了 "AddReg" 和 "DefaultInstall",但无济于事。

我认为该文件可能必须有一个特定的名称才能让 cab 知道它是什么 运行 它 (*.config?) 并且该条目可能类似于:

[DefaultInstall]
[AddReg]
"GuestOnly"="00000001"

...但我真的不知道,这只是一个猜测。有人知道这个条目应该是什么样子吗?这肯定是一种比 P/Invoke 等更简单的更改注册表 val 的方法。

这不是 *.vcproj 文件,是吗? (设置应用程序是用 C++ 编写的;应用程序本身是 C#)。

更新

事实证明我可能 尝试更新 "GuestOnly" 设置。

更新 2

无论如何,更新该值不会有什么坏处(可能会有所帮助);所以,我查看了我们的 C++ 安装应用程序,但它不包含 .inf 文件,也不包含任何对此类文件的引用,所以我想最好或唯一真正的方法是将注册表更新代码添加到应用程序本身。我从主窗体的 Load() 事件调用它。

给那只猫剥皮的方法有很多,但我通常在 CAB 设置中就有这种东西。我使用了一个在其上添加 UI 的程序,但它所做的只是创建一个配置文件 (.inf) 并将其传递给 CAB 向导 (https://msdn.microsoft.com/en-us/library/aa448616.aspx)。

文件信息,包括 AddReg 在这里 (https://msdn.microsoft.com/en-us/library/aa448654.aspx)。