如何使用C#cake创建一个注册表项?

时间:2016-11-09 06:21:44

标签: c# cakebuild

我需要基于从cake脚本中找到32/64位系统来创建一个注册表项。我可以在C#cake site中看到文件操作参考,目录操作参考。但我在C#cake中找不到与注册表相关的引用。任何人都可以让我知道是否有任何选项使用C#蛋糕进行注册表项?如果是,请指定参考链接。这将有助于我继续蛋糕脚本。

2 个答案:

答案 0 :(得分:3)

使用C#的替代方法,您也可以使用所有主要版本的Windows附带的Reg.exe

您可以使用StartProcess别名将此工具与Cake一起使用。

以下执行此操作的示例:

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");
}

答案 1 :(得分:1)

目前,没有用于使用注册表的Cake别名。话虽如此,没有什么可以阻止你直接使用标准C#类型操作注册表。

这种方法就是一个例子:

Writing to registry in a C# application

Cake为更复杂的事情提供了许多别名,但是,请记住,别名中提供的几乎所有内容都可以在主脚本中直接使用C#完成。别名只是为了方便起见。