未分類

PowerShell - Win32 API 関数を使用する

Win32 API 関数を使用する方法について、サンプルコードを用いて説明します。

ファイルの属性を Win32 API の SetFileAttributes 関数を使用して変更

1. 次のファンクションを作成します。

function set-attr ([string]$path, [long]$att) 
{  
  $memberDefinition = @' 
  [DllImport("kernel32.dll", SetLastError=true, CharSet=CharSet.Auto)] 
  public static extern bool SetFileAttributes(string lpFileName, long dwFileAttributes); 
'@  
  $type = Add-Type -Name test -MemberDefinition $memberDefinition -PassThru   
  $type::SetFileAttributes($path, $att)  
}

2. このファンクションをコールして、ファイルに Hidden 属性を付けます。

set-attr D:\Sample.txt 2 2. このファンクションをコールして、ファイルを通常の状態に戻します。 
set-attr D:\Sample.txt 0

(補足説明)
Win32 API には関数名の最後に A や W が付くものがあります。SetFileAttributes にも SetFileAttributesA がありますが、A が付いた関数はコールに失敗しました。理由は不明です。

-未分類