質問: new ProcessBuilder("cmd.exe", "/c",tempdirect); //batファイルを実行 try { netSetBat.start(); } catch (IOException e) { // TODO 自動生成された catch ブロック System.out.println("Fail to change public network"); } ・PublicChange.batファイルソースコード @echo on powershell Set-ExecutionPolicy RemoteSigned powershell Start-process powershell %~dp0\PublicChange.ps1 powershell Set-ExecutionPolicy Restricted Pause ・PublicChange.ps1ファイルソースコード Get-NetConnectionProfile Pause ``` ### 試したこと ・コマンドプロンプトを立ち上げ powershell Get-NetConnectionProfileを実行:CIM サーバーに接続できません~のエラーが出力されます。 ・コマンドプロンプトを立ち上げ、powershellコマンドでpowershellを起動後、Get-NetConnectionProfileコマンドを実行:正常作動(下記表示が出ます) C:\Users\ユーザー名>powershell Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. 新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6 PS C:\Users\ユーザー名>Get-NetConnectionProfile Name : aterm- InterfaceAlias : Wi-Fi 2 InterfaceIndex : 5 NetworkCategory : Public IPv4Connectivity : Internet IPv6Connectivity : NoTraffic ・PublicChange.batファイルソースコードを以下のようにして実行したところ @echo on powershell Set-ExecutionPolicy RemoteSigned start powershell powershell Set-ExecutionPolicy Restricted Pause 以下の画面が出力されました。 PS C:\Windows\system32> Get-NetconnectionProfile Get-NetconnectionProfile : CIM サーバーに接続できません。 ※以下同じ 一方、powershellを直接起動した後に、Get-NetconnectionProfileを実行すると以下の表示となりました。 新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6 PS C:\Windows\system32> Get-NetconnectionProfile Name : aterm- InterfaceAlias : Wi-Fi 2 InterfaceIndex : 5 NetworkCategory : Public IPv4Connectivity : Internet IPv6Connectivity : NoTraffic PS C:\Windows\system32> までは同一なのに表示結果が異なる理由がわかりません。 ご存じの方がおられましたら教えていただけないでしょうか。 よろしくお願いします。 ### 補足情報(FW/ツールのバージョンなど) batファイルをpowershellで実行しているのは、管理者として実行を行わせるためです。 これにより、powershell Set-ExecutionPolicy RemoteSignedを実行可能としております。
回答: ようやく解決方法がわかりました。私はウイルス対策ソフトとしてComodo Antivirusを用いているのですが、これがbatファイルの作動を停止させていました。この制限は「管理者として実行」しても解除されませんでしたが、Comodo Antivirusのアプリケーションのブロックを解除させることで解決することができました。またこの際、batファイル単体では解除後に正常に動作していてもJavaからProcessBuilderクラスを用いて読み込むと新しい制限ができており、bat実行時とは別のブロックを解除する必要がありました。コメントくださったasahina1979、ありがとうございました。またbatファイルを使わずにAdvapi32Utilクラスからレジストリをいじって値を変更/取得することもできそうです...。