0

我正在尝试在远程机器上设置环境变量。

setx /s machine var value

不起作用 - 它不产生任何输出并且不做任何事情。

psexec \\machine setx var value

表示它成功更改了值。但是,当我去机器并打开 cmd 时,它并没有显示出来。它确实出现在计算机->属性->高级->环境变量中。另外,当我跑步时

psexec \\machine cmd /c set

它写得正确。

我编写了一个名为 RefreshEnvironment.exe 的程序,它基本上执行以下操作:

    SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,
    (LPARAM) L"Environment", SMTO_ABORTIFHUNG,
    5000, &dwReturnValue);

如果我在本地机器上调用它,它可以解决问题 - 我在它之后打开 cmd 并获得正确的环境。但是,它不能远程工作。打电话

psexec \\machine RefreshEnvironment.exe

返回“访问被拒绝”。我只能通过显式写入用户和密码来运行它:

psexec \\machine -user domain\username -p password RefreshEnvironment.exe

很奇怪,因为它在两台机器上是相同的域、用户名和密码;它不起作用 - 什么也没说,但我仍然看不到本地机器上的环境。

任何想法都会受到欢迎。

4

1 回答 1

1

使用 /s 参数时,请确保目标计算机上正在运行“远程注册表”服务。这可能是您的问题的原因吗?在 Windows 7 上,如果该服务未在远程计算机上运行,​​我会收到“错误:无法完成指定的操作”。

于 2017-05-18T19:30:26.740 回答