Question
『プロセスを強制終了』アクティビティでExcelプロセスを終了する際に、以下エラーが稀に発生しました。
エラーメッセージ:
アクセスが拒否されました。:System.ComponentModel.Win32Exception
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)