xlogI125’s blog

パソコン作業を効率化したい

PowerShellでのOpenFileDialogがウイルス対策ソフトでブロックされる

Windows PowerShellでのMicrosoft.Win32.OpenFileDialog.ShowDialogSystem.Windows.Forms.OpenFileDialog.ShowDialogがウイルス対策ソフトでブロックされる。

# PowerShell 5.1, Windows 11 (2024年10月頃)
Add-Type -AssemblyName PresentationFramework
$dlg = [Microsoft.Win32.OpenFileDialog]::new()

# ウイルス対策ソフトでブロックされる
$dlg.ShowDialog()
# PowerShell 5.1, Windows 11 (2024年10月頃)
Add-Type -AssemblyName System.Windows.Forms
$dlg = [System.Windows.Forms.OpenFileDialog]::new()

# ウイルス対策ソフトでブロックされる
$dlg.ShowDialog()

ウイルス対策ソフトで今のところ、フォームへのドラッグ&ドロップはブロックされない様子。

# PowerShell 5.1, Windows 11 (2024年10月頃)
Set-StrictMode -Version Latest
Add-Type -AssemblyName PresentationFramework
$paths = [System.Collections.Specialized.StringCollection]::new()
$w = New-Object -TypeName System.Windows.Window -Property @{
  Title     = "ドラッグ&ドロップ"
  Width     = 300
  Height    = 200
  AllowDrop = $true
}
$w.add_Drop([System.Windows.DragEventHandler]{
  param([object]$sender, [System.Windows.DragEventArgs]$e)
  $paths = $e.Data.GetFileDropList()
  $paths | Write-Host -ForegroundColor Cyan
  $global:paths.AddRange($paths)
})

# ウイルス対策ソフトで今のところブロックされない様子
$w.ShowDialog()

$paths
# PowerShell 5.1, Windows 11 (2024年10月頃)
Set-StrictMode -Version Latest
Add-Type -AssemblyName System.Windows.Forms
$paths = [System.Collections.Specialized.StringCollection]::new()
$f = New-Object -TypeName System.Windows.Forms.Form -Property @{
  Text      = "ドラッグ&ドロップ"
  Width     = 300
  Height    = 200
  AllowDrop = $true
}
$f.add_DragEnter([System.Windows.Forms.DragEventHandler]{
  param([object]$sender, [System.Windows.Forms.DragEventArgs]$e)
  $e.Effect = [System.Windows.Forms.DragDropEffects]::All
})
$f.add_DragDrop([System.Windows.Forms.DragEventHandler]{
  param([object]$sender, [System.Windows.Forms.DragEventArgs]$e)
  $paths = $e.Data.GetFileDropList()
  $paths | Write-Host -ForegroundColor Cyan
  $global:paths.AddRange($paths)
})

# ウイルス対策ソフトで今のところブロックされない様子
$f.ShowDialog()

$paths