none
パソコンの再起動、サインアウト/サインインを行わずに変更したレジストリ値の結果を即時反映させる方法について RRS feed

  • 質問

  • 【環境】ThinkPad X1 Carbon(Windows 10 Enterprise 2016 LTSB),PowerShell

    【ご教示いただきたい点】

    タッチパッドを有効/無効にするPowerShellを作成して実行すると、レジストリには、書き込まれますが、パソコンの再起動、サインアウト/サインインしないとタッチパッドが有効/無効になりません。

    パソコンの再起動、サインアウト/サインインをせずに、タッチパッドが有効/無効にすることはできませんでしょうか。

    # ------------------+---------------------------------------------------------- #
     #  プログラム名     | TouchPad_EnabledDisabled.ps1                              #
     # ------------------+---------------------------------------------------------- #
     #  プログラムの概要 | 以下のモデルのタッチパッドの有効/無効を切り替える。       #
     #                   | ・ThinkPad X1 Tablet                                      #
     #                   | ・ThinkPad X1 Carbon                                      #
     #                   | ※ Synaptics Touchpad Driverが使用されている場合に限る   #                   |
     # ------------------+-----------------------------------------------------------#
    
    # ------------------------------------
    #  □ 定義 (フォーム)
     # ------------------------------------
    
    # -- アセンブリの読み込み --
    Add-Type -AssemblyName System.Windows.Forms
     Add-Type -AssemblyName System.Drawing
    
    
    # -- フォームの作成 --
    $form = New-Object System.Windows.Forms.Form
     $form.Text = "タッチパッド 有効/無効 切り替え ツール"
     $form.Size = New-Object System.Drawing.Size(250,150)
     $form.StartPosition = "CenterScreen"
     $form.MaximizeBox = $False
     $form.MinimizeBox = $False
     $form.ControlBox = $False
     $form.TopMost = $True
    
    
    # -- ラジオボタンの作成(タッチパッドを有効にする) --
    $EnabledButton = New-Object System.Windows.Forms.RadioButton
     $EnabledButton.Location = New-Object System.Drawing.Point(50,20)
     $EnabledButton.Size = New-Object System.Drawing.Size(200,20)
     $EnabledButton.Checked = $True
     $EnabledButton.Text = "タッチパッドを有効にする"
    
    
    # -- ラジオボタンの作成(タッチパッドを無効にする) --
    $DisabledButton = New-Object System.Windows.Forms.RadioButton
     $DisabledButton.Location = New-Object System.Drawing.Point(50,40)
     $DisabledButton.Size = New-Object System.Drawing.Size(200,20)
     $DisabledButton.Checked = $False
     $DisabledButton.Text = "タッチパッドを無効にする"
    
    $form.Controls.AddRange(@($EnabledButton,$DisabledButton))
    
    
    # -- ボタンの作成(はい) --
    $YesButton = New-Object System.Windows.Forms.Button
     $YesButton.Location = New-Object System.Drawing.Point(60,80)
     $YesButton.Size = New-Object System.Drawing.Size(50,20)
     $YesButton.Text = "はい"
     $YesButton.DialogResult = [System.Windows.Forms.DialogResult]::Yes
     $form.Controls.Add($YesButton)
     $form.AcceptButton = $YesButton
    
    
    # -- ボタンの作成(いいえ) --
    $NoButton = New-Object System.Windows.Forms.Button
     $NoButton.Location = New-Object System.Drawing.Point(120,80)
     $NoButton.Size = New-Object System.Drawing.Size(50,20)
     $NoButton.Text = "いいえ"
     $NoButton.DialogResult = [System.Windows.Forms.DialogResult]::No
     $form.Controls.Add($NoButton)
     $form.AcceptButton = $NoButton
    
    
     # ------------------------------------
     #  □ 定義 (ログ)
     # ------------------------------------
    
    # -- ログフォルダ --
    $LogFolder = "D:\Log"
    
    
    # -- ログファイル --
    $LogFile = "TouchPad_EnabledDisabled.log"
    
    
    # ------------------------------------
     #  ■ 処理
    # ------------------------------------
    
    # -- フォームの表示 --
    $result = $form.ShowDialog()
    
    
    # -- ログフォルダの確認 --
    if (!(Test-Path -Path $LogFolder)){
           New-Item -ItemType Directory -Path $LogFolder
           if ($? -eq $True) {
               [System.Windows.Forms.MessageBox]::Show("【情報】ログフォルダを作成しました")
           } else {
               [System.Windows.Forms.MessageBox]::Show("【エラー】ログフォルダの作成に失敗しました")
               Exit
           }
     }
    
    # -- ログファイルの確認 --
    if (!(Test-Path -Path $LogFolder\$LogFile)){
           New-Item $LogFolder\$LogFile
           if ($? -eq $True) {
               [System.Windows.Forms.MessageBox]::Show("【情報】ログファイルを作成しました")
           } else {
               [System.Windows.Forms.MessageBox]::Show("【エラー】ログファイルの作成に失敗しました")
               Exit
           }
     }
    
    # -- 「はい」ボタンを選択した場合 --
    if ($result -eq "Yes") {
         $Date = Get-Date
         "【情報】日付と時刻:" + $Date + " 説明:「はい」ボタンが選択されました。" >> $LogFolder\$LogFile
    
    
    # -- 「タッチパッドを有効にする」ラジオボタンを選択した場合 --
        if ($EnabledButton.Checked -eq $True) {
             $Date = Get-Date
             "【情報】日付と時刻:" + $Date + " 説明:「タッチパッドを有効にする」ボタンが選択されました。" >> $LogFolder\$LogFile
             reg add HKCU\Software\Synaptics\SynTPEnh /v DisableIntPDFeature /t REG_DWORD /d 34 /f
             if ($? -eq $True) {
               $Date = Get-Date
                 "【情報】日付と時刻:" + $Date + " 説明:タッチパッドを有効にしましたので、パソコンを再起動してください。" >> $LogFolder\$LogFile
                 [System.Windows.Forms.MessageBox]::Show("【情報】タッチパッドを有効にしましたので、パソコンを再起動してください")
             } else {
                 $Date = Get-Date
                 "【エラー】日付と時刻:" + $Date + " 説明:タッチパッドの有効に失敗しました。" >> $LogFolder\$LogFile
                 [System.Windows.Forms.MessageBox]::Show("【エラー】タッチパッドの有効に失敗しました")
                 Exit
             }
         }   
    
    
    # -- 「タッチパッドを無効にする」ラジオボタンを選択した場合 --
        if ($DisabledButton.Checked -eq "True") {
              $Date = Get-Date
             "【情報】日付と時刻:" + $Date + " 説明:「タッチパッドを無効にする」ボタンが選択されました。" >> $LogFolder\$LogFile
             reg add HKCU\Software\Synaptics\SynTPEnh /v DisableIntPDFeature /t REG_DWORD /d 51 /f
             if ($? -eq $True) {
               $Date = Get-Date
                 "【情報】日付と時刻:" + $Date + " 説明:タッチパッドを無効にしましたので、パソコンを再起動してください。" >> $LogFolder\$LogFile
                 [System.Windows.Forms.MessageBox]::Show("【情報】タッチパッドを無効にしましたので、パソコンを再起動してください")
             } else {
                 $Date = Get-Date
                 "【エラー】日付と時刻:" + $Date + " 説明:タッチパッドの無効に失敗しました。" >> $LogFolder\$LogFile
                 [System.Windows.Forms.MessageBox]::Show("【エラー】タッチパッドの無効に失敗しました")
                 Exit
             }
         }   
     }
     # -- 「いいえ」ボタンを選択した場合 --
    if ($result -eq "No") {
         $Date = Get-Date
         "【情報】日付と時刻:" + $Date + " 説明:「いいえ」ボタンが選択されました。" >> $LogFolder\$LogFile
         [System.Windows.Forms.MessageBox]::Show("終了しました")
         $Date = Get-Date
         "【情報】日付と時刻:" + $Date + " 説明:終了しました。" >> $LogFolder\$LogFile
          Exit
     }



    2019年9月16日 2:57

回答

  • チャブーンです。

    この件ですが、答えとしては残念ながらできません。とくにUser設定のレジストリ値についてはWindowsのつくりがそういうものだからです。

    どうしてもそれに似たことがやりたい、という場合、ユーザーのデスクトッププロセスである「explorer.exe」を再起動する必要があります。その場合、壁紙はそのままですが、スタートボタンやタスクバー、デスクトップアイコンなどはいったん非表示の状態となります。


    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。

    2019年9月16日 4:29
  • 対応するPnpDeviceを探してDisale/Enable-PnpDeviceできないの?

    $devices =Get-CimInstance Win32_PointingDevice | where -Property InfFileName -eq "msmouse.inf" #Synapticsのタッチパッドに合うようにwhere条件を変更すること
    $dev=$devices  | Select-Object -First 1
    
    Disable-PnpDevice -InstanceId $dev.DeviceID
    Enable-PnpDevice -InstanceId $dev.DeviceID
    #要管理者権限

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2019年9月16日 4:34

すべての返信

  • チャブーンです。

    この件ですが、答えとしては残念ながらできません。とくにUser設定のレジストリ値についてはWindowsのつくりがそういうものだからです。

    どうしてもそれに似たことがやりたい、という場合、ユーザーのデスクトッププロセスである「explorer.exe」を再起動する必要があります。その場合、壁紙はそのままですが、スタートボタンやタスクバー、デスクトップアイコンなどはいったん非表示の状態となります。


    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。

    2019年9月16日 4:29
  • 対応するPnpDeviceを探してDisale/Enable-PnpDeviceできないの?

    $devices =Get-CimInstance Win32_PointingDevice | where -Property InfFileName -eq "msmouse.inf" #Synapticsのタッチパッドに合うようにwhere条件を変更すること
    $dev=$devices  | Select-Object -First 1
    
    Disable-PnpDevice -InstanceId $dev.DeviceID
    Enable-PnpDevice -InstanceId $dev.DeviceID
    #要管理者権限

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2019年9月16日 4:34
  • ありがとうございます。

    レジストリをリロードするコマンドがあれば、可能かなとは思ったのですが、ないということですね。

    「explorer.exe」を再起動は試していませんが、もしかしたら、「explorer.exe」の再起動を行えば可能なのではと思いましたが、Word、Excelなどで作成中に「explorer.exe」を再起動したことがきっかけで、作成途中のデータが失われたということになったりすることを懸念しているため、「explorer.exe」の再起動については、止めておくことにします。

    「タッチパッドを有効にしましたので、パソコンを再起動してください」、「タッチパッドを無効にしましたので、パソコンを再起動してください」のダイアログを表示して、ユーザーにパソコンの再起動を促すようにしていますが、パソコンの再起動を忘れるユーザーもいるのではと思って、即時反映させられないかと思っていました。

    タッチパッドユーティリティでは、管理者権限がなくてもタッチパッドユーティリティにおいて、「タッチパッドを有効にする」のチェックボックスのチェックを外すと即時反映されるので、同じようにできないかなと思っていました。


    2019年9月16日 11:09
  • ありがとうございます。

    「タッチパッドを有効にする」のチェックボックスがないため、チェックボックスのチェックを外してタッチパッドを無効にすることができず、ユーザーに管理者権限を与えていないため、「Windowsの設定」ー「デバイス」-「タッチパッド」からオフにすることができないため、Powershellで作成しました。

    ユーザーに管理者権限を与えていないので、ご教示いただきましたサービスの有効/無効は難しそうです。

    Synapticsのタッチパッドユーティリティが起動しているかは確認していないので、確認してみて、起動しているようであれば、レジストリの変更後、Synapticsのタッチパッドユーティリティを起動し直して、反映されるか試して見たいと思います。


    2019年9月16日 11:19
  • ThinkPad X1 Tablet(Windows 10 Enterprise 2016 LTSB)については、エクスプローラーの再起動、パソコンの再起動、サインアウト/サインインをしなくても、タッチパッドの有効/無効ができました。

     # ------------------+---------------------------------------------------------- #
     #  プログラム名     | TouchPad_EnabledDisabled_ThinkPad_X1_Tablet.ps1           #
     # ------------------+---------------------------------------------------------- #
     #  プログラムの概要 | 以下のモデルのタッチパッドの有効/無効を切り替える。       #
     #                   | ・ThinkPad X1 Tablet                                      #
     #                   |                                                           #
     # ------------------+-----------------------------------------------------------#
    
    # ------------------------------------
    #  □ 定義 (フォーム)
    # ------------------------------------
    
    # -- アセンブリの読み込み --
    Add-Type -AssemblyName System.Windows.Forms
    Add-Type -AssemblyName System.Drawing
    
    # -- フォームの作成 --
    $form = New-Object System.Windows.Forms.Form
    $form.Text = "タッチパッド 有効/無効 切り替え ツール"
    $form.Size = New-Object System.Drawing.Size(250,150)
    $form.StartPosition = "CenterScreen"
    $form.MaximizeBox = $False
    $form.MinimizeBox = $False
    $form.ControlBox = $False
    $form.TopMost = $True
    
    # -- ラジオボタンの作成(タッチパッドを有効にする) --
    $EnabledButton = New-Object System.Windows.Forms.RadioButton
    $EnabledButton.Location = New-Object System.Drawing.Point(50,20)
    $EnabledButton.Size = New-Object System.Drawing.Size(200,20)
    $EnabledButton.Checked = $True
    $EnabledButton.Text = "タッチパッドを有効にする"
    
    # -- ラジオボタンの作成(タッチパッドを無効にする) --
    $DisabledButton = New-Object System.Windows.Forms.RadioButton
    $DisabledButton.Location = New-Object System.Drawing.Point(50,40)
    $DisabledButton.Size = New-Object System.Drawing.Size(200,20)
    $DisabledButton.Checked = $False
    $DisabledButton.Text = "タッチパッドを無効にする"
    
    $form.Controls.AddRange(@($EnabledButton,$DisabledButton))
    
    # -- ボタンの作成(はい) --
    $YesButton = New-Object System.Windows.Forms.Button
    $YesButton.Location = New-Object System.Drawing.Point(60,80)
    $YesButton.Size = New-Object System.Drawing.Size(50,20)
    $YesButton.Text = "はい"
    $YesButton.DialogResult = [System.Windows.Forms.DialogResult]::Yes
    $form.Controls.Add($YesButton)
    $form.AcceptButton = $YesButton
    
    # -- ボタンの作成(いいえ) --
    $NoButton = New-Object System.Windows.Forms.Button
    $NoButton.Location = New-Object System.Drawing.Point(120,80)
    $NoButton.Size = New-Object System.Drawing.Size(50,20)
    $NoButton.Text = "いいえ"
    $NoButton.DialogResult = [System.Windows.Forms.DialogResult]::No
    $form.Controls.Add($NoButton)
    $form.AcceptButton = $NoButton
    
    # ------------------------------------
    #  □ 定義 (ログ)
    # ------------------------------------
    
    # -- ログフォルダ --
    $LogFolder = "D:\Log"
    
    # -- ログファイル --
    $LogFile = "TouchPad_EnabledDisabled.log"
    
    
    # ------------------------------------
    #  ■ 処理
    # ------------------------------------
    
    # -- フォームの表示 --
    $result = $form.ShowDialog()
    
    # -- ログフォルダの確認 --
    if (!(Test-Path -Path $LogFolder)){
           New-Item -ItemType Directory -Path $LogFolder
           if ($? -eq $True) {
               [System.Windows.Forms.MessageBox]::Show("【情報】ログフォルダを作成しました")
           } else {
               [System.Windows.Forms.MessageBox]::Show("【エラー】ログフォルダの作成に失敗しました")
               Exit
           }
     }
    
    # -- ログファイルの確認 --
    if (!(Test-Path -Path $LogFolder\$LogFile)){
           New-Item $LogFolder\$LogFile
           if ($? -eq $True) {
               [System.Windows.Forms.MessageBox]::Show("【情報】ログファイルを作成しました")
           } else {
               [System.Windows.Forms.MessageBox]::Show("【エラー】ログファイルの作成に失敗しました")
               Exit
           }
     }
    
    # -- 「はい」ボタンを選択した場合 --
    if ($result -eq "Yes") {
         $Date = Get-Date
         "【情報】日付と時刻:" + $Date + " 説明:「はい」ボタンが選択されました。" >> $LogFolder\$LogFile
    
    # -- 「タッチパッドを有効にする」ラジオボタンを選択した場合 --
        if ($EnabledButton.Checked -eq $True) {
             $Date = Get-Date
             "【情報】日付と時刻:" + $Date + " 説明:「タッチパッドを有効にする」ボタンが選択されました。" >> $LogFolder\$LogFile
             reg add HKCU\Software\Synaptics\SynTPEnh /v DisableIntPDFeature /t REG_DWORD /d 34 /f
             if ($? -eq $True) {
               $Date = Get-Date
                 "【情報】日付と時刻:" + $Date + " 説明:レジストリ「HKCU\Software\Synaptics\SynTPEnh」の「DisableIntPDFeature」を「34」にしました。" >> $LogFolder\$LogFile
                 Stop-Process -Name SynTPEnh
                 if  ($? -eq $True) {
                      $Date = Get-Date
                      "【情報】日付と時刻:" + $Date + " 説明:プロセス「SynTPEnh.exe」を停止しました。" >> $LogFolder\$LogFile
                      Start-Process -FilePath "C:\Program Files\Synaptics\SynTP\SynTPEnh.exe"
                      if ($? -eq $True) {
                         $Date = Get-Date
                         "【情報】日付と時刻:" + $Date + " 説明:プロセス「SynTPEnh.exe」を開始しました。" >> $LogFolder\$LogFile
                         $Date = Get-Date
                         "【情報】日付と時刻:" + $Date + " 説明:タッチパッドを有効にしました。" >> $LogFolder\$LogFile
                          [System.Windows.Forms.MessageBox]::Show("タッチパッドを有効にしました")
                      } else {
                          $Date = Get-Date
                          "【情報】日付と時刻:" + $Date + " 説明:プロセス「SynTPEnh.exe」を開始できませんでした。" >> $LogFolder\$LogFile
                          [System.Windows.Forms.MessageBox]::Show("プロセス「SynTPEnh.exe」を開始できませんでしたので、パソコンの再起動をしてください")
                      }
                 } else {
                     $Date = Get-Date
                     "【情報】日付と時刻:" + $Date + " 説明:プロセス「SynTPEnh.exe」を停止できませんでした。" >> $LogFolder\$LogFile
                     [System.Windows.Forms.MessageBox]::Show("プロセス「SynTPEnh.exe」を停止できませんでしたので、パソコンの再起動をしてください")
                 }
             } else {
                 $Date = Get-Date
                 "【情報】日付と時刻:" + $Date + " 説明:レジストリ「HKCU\Software\Synaptics\SynTPEnh」の「DisableIntPDFeature」を「34」にできませんでした。" >> $LogFolder\$LogFile
                 [System.Windows.Forms.MessageBox]::Show("【エラー】タッチパッドの有効に失敗しました")
                 Exit
             }
        }
    
    # -- 「タッチパッドを無効にする」ラジオボタンを選択した場合 --
        if ($DisabledButton.Checked -eq $True) {
             $Date = Get-Date
             "【情報】日付と時刻:" + $Date + " 説明:「タッチパッドを無効にする」ボタンが選択されました。" >> $LogFolder\$LogFile
             reg add HKCU\Software\Synaptics\SynTPEnh /v DisableIntPDFeature /t REG_DWORD /d 51 /f
             if ($? -eq $True) {
               $Date = Get-Date
                 "【情報】日付と時刻:" + $Date + " 説明:レジストリ「HKCU\Software\Synaptics\SynTPEnh」の「DisableIntPDFeature」を「51」にしました。" >> $LogFolder\$LogFile
                 Stop-Process -Name SynTPEnh
                 if  ($? -eq $True) {
                      $Date = Get-Date
                      "【情報】日付と時刻:" + $Date + " 説明:プロセス「SynTPEnh.exe」を停止しました。" >> $LogFolder\$LogFile
                      Start-Process -FilePath "C:\Program Files\Synaptics\SynTP\SynTPEnh.exe"
                      if ($? -eq $True) {
                         $Date = Get-Date
                         "【情報】日付と時刻:" + $Date + " 説明:プロセス「SynTPEnh.exe」を開始しました。" >> $LogFolder\$LogFile
                         $Date = Get-Date
                         "【情報】日付と時刻:" + $Date + " 説明:タッチパッドを無効にしました。" >> $LogFolder\$LogFile
                          [System.Windows.Forms.MessageBox]::Show("タッチパッドを無効にしました")
                      } else {
                          $Date = Get-Date
                          "【情報】日付と時刻:" + $Date + " 説明:プロセス「SynTPEnh.exe」を開始できませんでした。" >> $LogFolder\$LogFile
                          [System.Windows.Forms.MessageBox]::Show("プロセス「SynTPEnh.exe」を開始できませんでしたので、パソコンの再起動をしてください")
                      }
                 } else {
                     $Date = Get-Date
                     "【情報】日付と時刻:" + $Date + " 説明:プロセス「SynTPEnh.exe」を停止できませんでした。" >> $LogFolder\$LogFile
                     [System.Windows.Forms.MessageBox]::Show("プロセス「SynTPEnh.exe」を停止できませんでしたので、パソコンの再起動をしてください")
                 }
             } else {
                 $Date = Get-Date
                 "【情報】日付と時刻:" + $Date + " 説明:レジストリ「HKCU\Software\Synaptics\SynTPEnh」の「DisableIntPDFeature」を「51」にできませんでした。" >> $LogFolder\$LogFile
                 [System.Windows.Forms.MessageBox]::Show("【エラー】タッチパッドの無効に失敗しました")
                 Exit
             }
        }
    }
    # -- 「いいえ」ボタンを選択した場合 --
    if ($result -eq "No") {
        $Date = Get-Date
        "【情報】日付と時刻:" + $Date + " 説明:「いいえ」ボタンが選択されました。" >> $LogFolder\$LogFile
        [System.Windows.Forms.MessageBox]::Show("終了しました")
        $Date = Get-Date
        "【情報】日付と時刻:" + $Date + " 説明:終了しました。" >> $LogFolder\$LogFile
         Exit
     }


    2019年9月17日 13:15
  • ThinkPad X1 Carbon(Windows 10 Enterprise 2016 LTSB)の場合は、パソコンの再起動が必要でした。

    # ------------------+---------------------------------------------------------- #
    #  プログラム名     | TouchPad_EnabledDisabled_ThinkPad_X1_Carbon.ps1                              #
    # ------------------+---------------------------------------------------------- #
    #  プログラムの概要 | 以下のモデルのタッチパッドの有効/無効を切り替える。       #
    #                   | ・ThinkPad X1 Carbon                                      #
    #                   |                                                           #
    # ------------------+-----------------------------------------------------------#
    
    # ------------------------------------
    #  □ 定義 (フォーム)
    # ------------------------------------
    
    # -- アセンブリの読み込み --
    Add-Type -AssemblyName System.Windows.Forms
    Add-Type -AssemblyName System.Drawing
    
    # -- フォームの作成 --
    $form = New-Object System.Windows.Forms.Form
    $form.Text = "タッチパッド 有効/無効 切り替え ツール"
    $form.Size = New-Object System.Drawing.Size(250,150)
    $form.StartPosition = "CenterScreen"
    $form.MaximizeBox = $False
    $form.MinimizeBox = $False
    $form.ControlBox = $False
    $form.TopMost = $True
    
    # -- ラジオボタンの作成(タッチパッドを有効にする) --
    $EnabledButton = New-Object System.Windows.Forms.RadioButton
    $EnabledButton.Location = New-Object System.Drawing.Point(50,20)
    $EnabledButton.Size = New-Object System.Drawing.Size(200,20)
    $EnabledButton.Checked = $True
    $EnabledButton.Text = "タッチパッドを有効にする"
    
    # -- ラジオボタンの作成(タッチパッドを無効にする) --
    $DisabledButton = New-Object System.Windows.Forms.RadioButton
    $DisabledButton.Location = New-Object System.Drawing.Point(50,40)
    $DisabledButton.Size = New-Object System.Drawing.Size(200,20)
    $DisabledButton.Checked = $False
    $DisabledButton.Text = "タッチパッドを無効にする"
    
    $form.Controls.AddRange(@($EnabledButton,$DisabledButton))
    
    # -- ボタンの作成(はい) --
    $YesButton = New-Object System.Windows.Forms.Button
    $YesButton.Location = New-Object System.Drawing.Point(60,80)
    $YesButton.Size = New-Object System.Drawing.Size(50,20)
    $YesButton.Text = "はい"
    $YesButton.DialogResult = [System.Windows.Forms.DialogResult]::Yes
    $form.Controls.Add($YesButton)
    $form.AcceptButton = $YesButton
    
    # -- ボタンの作成(いいえ) --
    $NoButton = New-Object System.Windows.Forms.Button
    $NoButton.Location = New-Object System.Drawing.Point(120,80)
    $NoButton.Size = New-Object System.Drawing.Size(50,20)
    $NoButton.Text = "いいえ"
    $NoButton.DialogResult = [System.Windows.Forms.DialogResult]::No
    $form.Controls.Add($NoButton)
    $form.AcceptButton = $NoButton
    
    # ------------------------------------
    #  □ 定義 (ログ)
    # ------------------------------------
    
    # -- ログフォルダ --
    $LogFolder = "D:\Log"
    
    # -- ログファイル --
    $LogFile = "TouchPad_EnabledDisabled.log"
    
    # ------------------------------------
    #  ■ 処理
    # ------------------------------------
    
    # -- フォームの表示 --
    $result = $form.ShowDialog()
    
    # -- ログフォルダの確認 --
    if (!(Test-Path -Path $LogFolder)){
            New-Item -ItemType Directory -Path $LogFolder
            if ($? -eq $True) {
                [System.Windows.Forms.MessageBox]::Show("【情報】ログフォルダを作成しました")
            } else {
                [System.Windows.Forms.MessageBox]::Show("【エラー】ログフォルダの作成に失敗しました")
                Exit
            }
      }
    
    # -- ログファイルの確認 --
    if (!(Test-Path -Path $LogFolder\$LogFile)){
            New-Item $LogFolder\$LogFile
            if ($? -eq $True) {
                [System.Windows.Forms.MessageBox]::Show("【情報】ログファイルを作成しました")
            } else {
                [System.Windows.Forms.MessageBox]::Show("【エラー】ログファイルの作成に失敗しました")
                Exit
            }
      }
    
    # -- 「はい」ボタンを選択した場合 --
    if ($result -eq "Yes") {
          $Date = Get-Date
          "【情報】日付と時刻:" + $Date + " 説明:「はい」ボタンが選択されました。" >> $LogFolder\$LogFile
    
    # -- 「タッチパッドを有効にする」ラジオボタンを選択した場合 --
        if ($EnabledButton.Checked -eq $True) {
              $Date = Get-Date
              "【情報】日付と時刻:" + $Date + " 説明:「タッチパッドを有効にする」ボタンが選択されました。" >> $LogFolder\$LogFile
              reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\PrecisionTouchPad\Status" /V "Enabled" /T REG_DWORD /d "0x1" /F
              if ($? -eq $True) {
               $Date = Get-Date
                  "【情報】日付と時刻:" + $Date + " 説明:タッチパッドを有効にしましたので、パソコンを再起動してください。" >> $LogFolder\$LogFile
                  [System.Windows.Forms.MessageBox]::Show("【情報】タッチパッドを有効にしましたので、パソコンを再起動してください")
              } else {
                  $Date = Get-Date
                  "【エラー】日付と時刻:" + $Date + " 説明:タッチパッドの有効に失敗しました。" >> $LogFolder\$LogFile
                  [System.Windows.Forms.MessageBox]::Show("【エラー】タッチパッドの有効に失敗しました")
                  Exit
              }
          }   
    
    # -- 「タッチパッドを無効にする」ラジオボタンを選択した場合 --
        if ($DisabledButton.Checked -eq "True") {
               $Date = Get-Date
              "【情報】日付と時刻:" + $Date + " 説明:「タッチパッドを無効にする」ボタンが選択されました。" >> $LogFolder\$LogFile
               reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\PrecisionTouchPad\Status" /V "Enabled" /T REG_DWORD /d "0x0" /F
              if ($? -eq $True) {
               $Date = Get-Date
                  "【情報】日付と時刻:" + $Date + " 説明:タッチパッドを無効にしましたので、パソコンを再起動してください。" >> $LogFolder\$LogFile
                  [System.Windows.Forms.MessageBox]::Show("【情報】タッチパッドを無効にしましたので、パソコンを再起動してください")
              } else {
                  $Date = Get-Date
                  "【エラー】日付と時刻:" + $Date + " 説明:タッチパッドの無効に失敗しました。" >> $LogFolder\$LogFile
                  [System.Windows.Forms.MessageBox]::Show("【エラー】タッチパッドの無効に失敗しました")
                  Exit
              }
          }   
    }
    # -- 「いいえ」ボタンを選択した場合 --
    if ($result -eq "No") {
          $Date = Get-Date
          "【情報】日付と時刻:" + $Date + " 説明:「いいえ」ボタンが選択されました。" >> $LogFolder\$LogFile
          [System.Windows.Forms.MessageBox]::Show("終了しました")
          $Date = Get-Date
          "【情報】日付と時刻:" + $Date + " 説明:終了しました。" >> $LogFolder\$LogFile
           Exit
    }


    2019年9月17日 13:23