1

在启动程序之前,我必须创建一个脚本来更新系统环境变量(基于命令行参数)。

在 Windows 7 中,拒绝更新系统环境变量。我想为环境的设置执行特权提升。变种。但以普通用户身份运行程序。

怎么做?

注意:我尝试了以下解决方案:

使用 2 个脚本:

  • 1个从命令行获取所有信息的主控,它调用从属脚本来更改系统环境。var.,最终启动程序
  • 1 个更新系统环境的从属脚本。变种。
  • 主脚本尝试使用特权提升调用从脚本,但这不起作用

我尝试了 2 种特权提升解决方案:

  1. 使用“runas /User:Administrator ...”命令,但它要求输入管理员密码:失败
  2. 使用 "ShellExecute ...., "runas"" 命令,但它告诉我我的脚本不是应用程序:失败
4

2 回答 2

1

我找到了一种至少可以在 Windows 7 上运行的方法(不知道它是否可以在我们仍然拥有的少数 Windows XP 帽子上运行)。

我从主脚本中执行了以下操作:

currentDirectory = left(WScript.ScriptFullName,(Len(WScript.ScriptFullName))-(len(WScript.ScriptName)))

Set UAC = WScript.CreateObject("Shell.Application")
UAC.ShellExecute "wscript.exe", currentDirectory + "my-script.vbs /Param1:Value1 ...", "", "runas", 0

my-script 正在执行 sys var env 更新。

注意:我第一次使用 ShellExecute 的经验失败了,因为我试图执行脚本。而不是“wscript.exe”,我有“my-script.vbs”作为可执行文件名。

于 2012-04-19T07:55:57.623 回答
0

恕我直言,禁用 UAC,这只是* 但如果你不能(像我 8<),你可以使用

psexec.exe -d -u userid -p password CMD /c program_with_path

您(或运行 sript 的用户)必须确认提示。

于 2012-04-16T11:08:58.360 回答