如何使用C#蛋糕制作注册表项?
问题描述:
我需要基于从Cake脚本中查找32/64位系统来创建注册表项。我可以在C#cake site中看到文件操作参考,目录操作参考。但我找不到C#蛋糕中的注册表相关参考。任何人都可以请让我知道是否有任何选项使用C#蛋糕做注册表项?如果是这样,请指定参考链接。这将帮助我继续在蛋糕脚本。如何使用C#蛋糕制作注册表项?
答
目前,没有用于处理注册表的Cake别名。话虽如此,没有什么可以阻止您直接使用标准C#类型操作注册表。
的一个这样的方法的一个例子是在这里:
Writing to registry in a C# application
蛋糕提供的东西都是比较复杂的事情,但是,请记住,几乎一切,是在一个别名提供了大量的别名可能直接用C#在你的主脚本中完成。别名只是作为一种方便而已。
答
使用C#的替代方案您也可以使用所有主要版本的Windows附带的Reg.exe
。
您可以在Cake中使用此工具,使用StartProcess别名。
下面这样做的一个例子:
DirectoryPath system32Path = Context.Environment
.GetSpecialPath(SpecialPath.Windows)
.Combine("System32");
FilePath regPath = system32Path.CombineWithFilePath("reg.exe");
string keyName = "HKEY_CURRENT_USER\\Software\\Cake";
string valueName = "Rocks";
string valueData = "1";
ProcessSettings regSettings = new ProcessSettings()
.WithArguments(
arguments => arguments
.Append("add")
.AppendQuoted(keyName)
.Append("/f")
.AppendSwitchQuoted("/v", valueName)
.AppendSwitchQuoted("/t", "REG_DWORD")
.AppendSwitchQuoted("/d", valueData)
);
int result = StartProcess(regPath, regSettings);
if (result == 0)
{
Information("Registry value successfully set");
}
else
{
Information("Failed to set registry value");
}