我有一个脚本,我想在启动时运行,但需要提升权限。有没有办法使用组策略来实现这一点?
我尝试使用 GPO 将其添加为启动脚本,但它似乎无法运行。如果我从标准 cmd 提示符运行它,则会出现访问被拒绝的情况,但如果我右键单击命令提示符并选择“以管理员身份运行”,则它可以正常工作,因此我怀疑这是一个权限问题。
该脚本将每个网卡上的 MTU 设置为 1400,如下所示
Dim strDNSDomain
Dim strComputer
Dim strID
Dim strKeyPath
Dim strValueName
Dim strDWValue
Const HKEY_LOCAL_MACHINE = &H80000002
Const DEFAULT_MTU_Size = 1400
const KEY_SET_VALUE = &H0002
'==== Gets the Setting for MTU from the command line in the form of /MTU:1500 ====
Set colNamedArguments = Wscript.Arguments.Named
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
strDWValue = DEFAULT_MTU_SIZE
Set colAdapters = objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration")
For each objAdapter in colAdapters
strDNSDomain = objAdapter.DNSDomain
if Instr(1, strDNSDOmain, strTemp) >0 then
strID = objAdapter.SettingID
strKeyPath = "SYSTEM\CurrentControlSet\Services\TCPIP\Parameters\Interfaces\" & strID
strValueName = "MTU"
oReg.CheckAccess HKEY_LOCAL_MACHINE, strKeyPath, KEY_QUERY_VALUE, bHasAccessRight
If bHasAccessRight = True Then
oReg.GetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,dwValue
WScript.Echo strKeyPath & " value " & strValueName & " contains " & dwValue
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strDWValue
WScript.Echo strKeyPath & " value " & strValueName & " changing to " & strDWValue
oReg.GetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,dwValue
WScript.Echo strKeyPath & " value " & strValueName & " changed to " & dwValue
Else
WScript.Echo "Cannot set registry value - access denied"
End if
End if
Next
答案1
脚本放置在计算机配置\Windows 设置\脚本(启动/关机)运行为本地系统这通常是安装程序等所需的全部内容。使用组策略部署的 MSI 也是如此。
您知道您的脚本需要什么权限吗?您的脚本执行什么操作需要这些权限?
从 Sysinternals 获取一份 Process Monitor 的副本,使用标准用户帐户,监视脚本以了解其正在执行的操作以及运行它需要哪些额外权限。然后,您可以使用这些信息找出本地系统帐户无法运行它的原因。
编辑:您可以使用启动脚本来运行 net shell 命令
netsh interface ipv4 set subinterface interface="Local Area Connection" mtu=1400
这是脚本中需要的一行代码。有什么用?
刘易斯
答案2
您可以通过组策略首选项完成注册表更新。如本 TechNet 文档中所述,GPP 选项中有一个很好的子集可用于更改注册表 -http://technet.microsoft.com/en-us/library/cc753092.aspx