Infelizmente, não há um caminho fácil. Como você percebeu, você está perdendo a magia " leia as configurações agora "comando :
InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, NULL)
InternetSetOption(NULL, INTERNET_OPTION_REFRESH, NULL, NULL)
Claro, você não pode simplesmente chamar uma função C de cmd
. Há, no entanto, uma maneira (relativamente) viável de fazê-lo com o PowerShell >:
function Reload-InternetOptions
{
$signature = @'
[DllImport("wininet.dll", SetLastError = true, CharSet=CharSet.Auto)]
public static extern bool InternetSetOption(IntPtr hInternet, int
dwOption, IntPtr lpBuffer, int dwBufferLength);
'@
$interopHelper = Add-Type -MemberDefinition $signature -Name MyInteropHelper -PassThru
$INTERNET_OPTION_SETTINGS_CHANGED = 39
$INTERNET_OPTION_REFRESH = 37
$result1 = $interopHelper::InternetSetOption(0, $INTERNET_OPTION_SETTINGS_CHANGED, 0, 0)
$result2 = $interopHelper::InternetSetOption(0, $INTERNET_OPTION_REFRESH, 0, 0)
$result1 -and $result2
}
Basta invocá-lo assim: Reload-InternetOptions
. Ele retornará True
quando for bem sucedido.
Por favor, note que este método cria dinamicamente algumas coisas toda vez que você o executa. Ele não pode ser descarregado pelo PowerShell e continuará acumulando até que você saia do processo do PowerShell que executou o método.