我有以下批处理文件:
powershell -Command "& {Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsStore\WindowsUpdate -Name AutoDownload -Value 2 -Type DWord}"
如果我在本地运行它,确实会对注册表进行必要的更改,但是,如果将其上传到共享文件夹中并通过共享文件夹执行此批处理文件,则不会更改注册表。
我到底在这里想念什么?如果文件位于本地计算机上,则可以正常工作,但是如果我从共享文件夹中启动文件(而不在本地下载),则不会进行任何更改。
通过HTA文件使用以下代码调用批处理文件:
function Win10UninstallUnnecessaryApps(){
var shell = new ActiveXObject("WScript.Shell");
var path = '"file:\\\\fs\\FIle Share\\SA Support\\ZverTools\\Win10UninstallUnnecessaryApps.bat"';
shell.run(path,1,false);
}
答案 0 :(得分:0)
当您从网络共享运行批处理文件时,这意味着您不在本地计算机中。您还需要管理员权限。所以你必须使用这个:
@echo off
NET SESSION >NUL 2>&1
IF %ERRORLEVEL% NEQ 0 GOTO elevate
GOTO admintasks
:elevate
pushd %~dp0
MSHTA.exe "javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('%~nx0', '', '', 'runas', 1);close();"
:admintasks
powershell -command invoke-command -computername TheLocalComputerName -scriptblock "& {Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsStore\WindowsUpdate -Name AutoDownload -Value 2 -Type DWord}"
用您要在其中执行此操作的计算机替换TheLocalComputerName
。
答案 1 :(得分:0)
我知道以下方法并不完美,但这是适用于我的情况的唯一解决方案。这是一种执行HTA应用程序执行的注册表更改的黑客方法。您应该创建一个批处理文件,该文件下载您的另一个批处理文件(内部具有更改注册表的代码),然后选择该特定文件并使用SendKeys方法模仿click事件。我使用以下技巧更新了HTA应用程序后,它运行良好,并且毕竟我的单击注册表更改了。
这里是启动批处理文件(从HTA应用程序按钮执行)的代码,该代码运行另一个批处理文件(应编辑注册表值的代码):
@if (@CodeSection == @Batch) @then
@echo off
set SendKeys=CScript //nologo //E:JScript "%~F0"
xcopy "\\fs\FIle Share\SA Support\ZverTools\Win10UninstallUnnecessaryApps.bat" "%USERPROFILE%" /y
TIMEOUT /T 2 /NOBREAK
set targetfilepath=%USERPROFILE%\Win10UninstallUnnecessaryApps.bat
explorer.exe /select, "%TARGETFILEPATH%"
TIMEOUT /T 4 /NOBREAK
%SendKeys% "{ENTER}"
goto :EOF
@end
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));
这是唯一允许我单击一次HTA应用程序按钮即可更改注册表值的解决方案。
我想通过批处理文件(从HTA应用执行)更改注册表值是:
powershell -Command "& {Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsStore\WindowsUpdate -Name AutoDownload -Value 2 -Type DWord}"