我正在尝试更新Windows CE / Compact Framework应用程序中的注册表值。
我可以在.NET 4.5中执行我想要的操作,但.NET 3.5缺少一些以这种方式执行的操作(特别是 RegistryView 和 OpenBaseKey ;好奇可以仔细阅读所有血腥细节here)。
另一种可能性是通过应用程序发送* .reg文件并通过ShellExecuteEx()调用它,但这对我来说似乎有点Rubegoldbergish。
另一种可能性是use P/Invoke,但这似乎是改良的霍布斯主义(讨厌和野蛮,但不短(在这种情况下短期会好)。
所以...我确实终于找到了一个看起来像是一个几乎是一个很好的选择的东西。根据Andy Wigly在他的书“ Microsoft .NET Compact Framework ”(打印1879左右)中的说法,您可以通过配置文件添加或操作注册表值。当应用程序部署在设备上时,此配置文件似乎嵌入在/ 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)
但什么配置文件在这里如此狂热?我找不到他备份的地方,并提供有关它的基本信息。
好的,我可以尝试找到“设备的SDK”(它们是安装了这个应用程序的Motorola 3090/3190设备),但我希望有人知道他正在谈论哪个配置文件,以及所需的条目是什么等。
我们为这个应用程序安装了一个单独的应用程序,我搜索了它的“AddReg”和“DefaultInstall”,但无济于事。
我认为该文件可能必须有一个特定的名称,以便知道它是什么并运行它(* .config?)并且该条目可能类似于:
[DefaultInstall]
[AddReg]
"GuestOnly"="00000001"
......但我真的不知道,这只是猜测。有人知道这个条目应该是什么样的吗?肯定是比P / Invoke等更简单的更改注册表val的方法。
这不是* .vcproj文件,是吗? (安装应用程序是用C ++编写的;应用程序本身是C#)。
事实证明我可能barking up the wrong tree尝试更新“GuestOnly”设置。
无论如何,它不会伤害(并且可能帮助)更新该值;所以,我查看了我们的C ++安装应用程序,但它不包含.inf文件,也没有任何对此类的引用,所以我想最好或唯一真正的方法是通过向应用程序本身添加注册表更新代码。我从主窗体的Load()事件中调用它。
答案 0 :(得分:1)
很多方法可以让那只猫皮肤,但我通常在CAB设置中有这样的东西。我使用一个程序来打开它的UI,但它所做的只是创建一个配置文件(.inf)并将其传递给CAB向导(https://msdn.microsoft.com/en-us/library/aa448616.aspx)。
文件信息,包括AddReg在这里(https://msdn.microsoft.com/en-us/library/aa448654.aspx)。