『プロセスを強制終了』でExcelプロセスを終了する時「リトライ スコープ:アクセスが拒否されました。」エラーが稀に発生

:grey_question: Question

『プロセスを強制終了』アクティビティでExcelプロセスを終了する際に、以下エラーが稀に発生しました。

エラーメッセージ:

アクセスが拒否されました。:System.ComponentModel.Win32Exception

:bulb: Answer

原因

v20.10以前のUiPath.System.Activitiesパッケージにある『プロセスを強制終了』アクティビティはデフォルトで全てのユーザーのプロセスを終了します。

複数ユーザーが利用される環境では、このエラーが発生する可能性があります。

解決策

方法1:

UiPath.System.Activitiesパッケージをv21.4.0以降のバージョンにアップグレードし、『プロセスを強制終了』アクティビティの「適用対象」プロパティを"KillProcessApplyOn.OnlyCurrentUser"に指定し、現在のユーザーのプロセスのみを終了するようにします。

方法2:

v21.4.0未満のUiPath.System.Activitiesパッケージを利用している場合、以下方法でExcelプロセスを終了します。

1.『プロセスを取得』アクティビティで全てのプロセスを取得します。

2.以下式で現在のユーザーを取得し、取得したユーザー名を変数currentUser に格納します。

   System.Security.Principal.WindowsIdentity.GetCurrent().Name.Replace(System.Environment.UserDomainName+"\","")

3.『繰り返し (コレクションの各要素)』アクティビティで処理1で取得したプロセスリストをループします。

4.繰り返し項目変数のprocessのプロセス名がExcelであり、且つプロセスの起動ユーザーが処理2で取得したユーザー名と一致する場合、『プロセスを強制終了』アクティビティで該当プロセスを終了します(「ターゲット/プロセスを終了」プロパティに繰り返し項目変数のprocessを指定する)。

   IF文の書き方例:process.ProcessName = "EXCEL" And currentUser = process.StartInfo.Environment("Username")

※詳細の実装方法は、添付のサンプルフローをご参照くささい。
プロセスを強制終了.zip (68.0 KB)