使用Inno Setup更改计算机名称

时间:2015-11-26 17:31:41

标签: windows installer inno-setup computer-name

有没有办法通过Inno Setup更改您的计算机名称?我是Inno Setup的新手,但是我搜索的很多,我还没有找到任何一个例子。我知道您可以使用常量{computername}访问计算机名称,但似乎没有更改它的功能。

我考虑过使用HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName部分更改[Registry]中计算机名称的注册表项,但我不知道如果我使用语法创建新密钥会发生什么。它会覆盖它吗?它会给我一个错误吗?任何想法都将不胜感激。

创建新密钥的语法示例

Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName"; ValueType: string; ValueName: "ComputerName"; ValueData: "MyNewComputerName";

1 个答案:

答案 0 :(得分:2)

您应该致电SetComputerName API function

此外,由于计算机名称更改仅在计算机重新启动后才有效,因此您应将AlwaysRestart directive设置为yes,以使安装程序在安装后重新启动计算机。

[Setup]
AlwaysRestart=yes

[Code]

function SetComputerName(lpComputerName: PAnsiChar): BOOL;
    external 'SetComputerNameA@kernel32.dll stdcall';

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssInstall then
  begin
    Log('Changing computer name');
    if SetComputerName('MyNewName') then
    begin
      Log('Computer name changed');
    end
      else
    begin
      Log('Failed to change computer name - ' + SysErrorMessage(DLLGetLastError));
    end;
  end;
end;

在Inno Setup的 Unicode 版本上测试。

更改注册表项也可能有效。只是你应该使用ComputerName密钥(而不是ActiveComputerName)并重启。

我相信你的语法是正确的。虽然我没有测试它。但请注意,maximal computer name length为15个字符(因此MyNewComputerName太长)。