Julia LoadError on Windows: Application Control blocks libintl-8.dll

Hi, I am new to Julia. I have been getting this error every once in a while and I am not quite sure how to solve it.

I am running Julia on Windows through VS Code. When I run my script, Windows Security blocks a DLL from Julia artifacts. The blocked file is libintl-8.dll, loaded through GettextRuntime_jll. Has anyone faced this with Application Control policy? Is this something I can fix from Julia/pkg side?

My error text:
ERROR: LoadError: InitError: could not load library
“C:\Users<username>.julia\artifacts<artifact_hash>\bin\libintl-8.dll”

An Application Control policy has blocked this file.

Stacktrace:
[1] dlopen…
[2] dlopen…
[3] top-level scope
@ C:\Users<username>.julia\packages\GettextRuntime_jll...\x86_64-w64-mingw32-cxx11.jl:20

This is what I was trying to run:

using MatrixMarket
using SparseArrays
using LinearAlgebra
using Plots

include("../../Utils/check_spd.jl")
include("../../Linear Solvers/my_pcg_solve.jl")
include("../../SPAI Iterations/my_lomr_spai.jl")

# LOMR-SPAI test on tri100eigs4k

A = mmread("Matrices/tri100eigs4k.mtx")
A = sparse(Float64.(A))
n = size(A, 1)

println("LOMR-SPAI TEST")
println("Matrix: tri100eigs4k")
println("Size: ", size(A))
println("Nonzeros in A: ", nnz(A))

# 1. Check original matrix A

println("\nChecking whether original matrix A is SPD...")

spd_A = check_spd(A; name = "tri100eigs4k")

if !spd_A.is_spd
    error("tri100eigs4k is not SPD, stopping experiment.")
end

println("tri100eigs4k passed the SPD check.")

# 2. Build LOMR-SPAI

spai_itmax = 40
spai_tol = 1e-3

M0 = spzeros(Float64, n, n)

println("\nBuilding LOMR-SPAI...")

M_lomr, res_lomr = my_lomr(A, M0, spai_itmax, spai_tol)

println("\nLOMR-SPAI construction done.")
println("SPAI iterations: ", length(res_lomr) - 1)
println("Nonzeros in M_lomr: ", nnz(M_lomr))

# 3. Compute SPAI quality

I_sparse = spdiagm(0 => ones(Float64, n))

spai_quality =
    norm(I_sparse - A * M_lomr) / norm(I_sparse)

println("SPAI quality ||I - A*M||_F / ||I||_F: ", spai_quality)

# 4. Check whether LOMR-SPAI is SPD

println("\nChecking whether LOMR-SPAI is SPD...")

spd_lomr = check_spd(M_lomr; name = "LOMR-SPAI Float64")

# 5. Plot LOMR-SPAI convergence

plot(
    0:length(res_lomr)-1,
    res_lomr,
    yscale = :log10,
    xlabel = "SPAI iteration",
    ylabel = "LOMR-SPAI residual",
    title = "LOMR-SPAI convergence for tri100eigs4k",
    label = "LOMR Float64",
    linewidth = 3
)

savefig("tri100eigs4k_lomr_spai_convergence.png")

# 6. If LOMR-SPAI is SPD, run PCG

if spd_lomr.is_spd

    println("\nLOMR-SPAI passed SPD check. Running PCG...")

    x_exact = ones(Float64, n)
    b = A * x_exact
    x0 = zeros(Float64, n)

    solver_itmax = 1000
    solver_tol = 1e-5

    x_pcg_lomr, res_pcg_lomr =
        my_pcg_solve(A, b, x0, M_lomr, solver_itmax, solver_tol)

    pcg_lomr_rel_res =
        norm(b - A * x_pcg_lomr) / norm(b)

    pcg_lomr_rel_err =
        norm(x_pcg_lomr - x_exact) / norm(x_exact)

else
    println("\nLOMR-SPAI is not SPD. PCG will be skipped.")

    res_pcg_lomr = Float64[]
    pcg_lomr_rel_res = NaN
    pcg_lomr_rel_err = NaN
end

# 7. Summary

println("\n")
println("SUMMARY")

println("Matrix: tri100eigs4k")
println("Method: LOMR-SPAI")
println("SPAI iterations: ", length(res_lomr) - 1)
println("SPAI quality ||I - A*M||_F / ||I||_F: ", spai_quality)
println("Symmetry error: ", spd_lomr.symmetry_error)
println("Smallest eigenvalue: ", spd_lomr.lambda_min)
println("Largest eigenvalue: ", spd_lomr.lambda_max)
println("Cholesky succeeded: ", spd_lomr.cholesky_success)
println("SPD: ", spd_lomr.is_spd)
println("Nonzeros in M: ", nnz(M_lomr))
println("Saved plot: tri100eigs4k_lomr_spai_convergence.png")

if spd_lomr.is_spd
    println("\nPCG with LOMR-SPAI")
    println("Iterations: ", length(res_pcg_lomr) - 1)
    println("Final residual: ", pcg_lomr_rel_res)
    println("Relative error: ", pcg_lomr_rel_err)
else
    println("\nPCG with LOMR-SPAI was skipped because M_lomr was not SPD.")
end