使用 Inno Setup 更改计算机名称

Changing the computer name with Inno Setup

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

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

创建新密钥的语法示例

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

你应该打电话给 SetComputerName API function.

另外由于电脑改名后电脑重启才有效,所以你应该设置AlwaysRestart directiveyes让安装程序在安装后重启电脑。

[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 版本上测试(Inno Setup 6 的唯一版本)。


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

否则我相信您的语法是正确的。虽然我没有测试它。但是请注意 maximal computer name length 是 15 个字符(所以 MyNewComputerName 太长了)。