0

我在这个网站上找到了一些代码,这些代码在大多数情况下似乎都很好用。

这是代码:

 Private Function GetProcessOwner(processId As Integer) As String
    Try
        Dim query = "Select * From Win32_Process Where ProcessID = " & processId
        Dim searcher = New ManagementObjectSearcher(query)
        Dim processList = searcher.Get()
        For Each obj As ManagementObject In processList
            Dim argList As String() = {String.Empty, String.Empty}
            Dim returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList))
            If returnVal = 0 Then
                Return argList(1) & "\" & argList(0)
            End If
        Next
    Catch ex As Exception
    End Try

    Return ""
End Function

但是,有时我会得到这个:

RuntimeCallableWrapper avec l'erreur suivante : Un appel sortant ne peut pas être effectué étant donné que l’application répartit un appel entrant synchrone. (Exception de HRESULT : 0x8001010D (RPC_E_CANTCALLOUT_ININPUTSYNCCALL)). Cela se produit habituellement car le contexte COM 0x78e910 dans lequel ce RuntimeCallableWrapper a été créé a été déconnecté ou est occupé à autre chose et ne peut pas traiter la transition des contextes. Aucun proxy ne sera utilisé pour traiter la demande sur le composant COM. Cela peut entraîner des dysfonctionnements ou des pertes de données. Pour éviter ce problème, assurez-vous que tous les contextes/cloisonnements/threads COM restent actifs et sont disponibles pour la transition des contextes, tant que l'application n'en a pas terminé avec les RuntimeCallableWrappers qui représentent les composants COM qui s'y trouvent.

它是法语的,但我不能用我自己的语言真正理解它,所以我不能真正翻译。谁能告诉我我做错了什么以及如何纠正它?

我发现还有另一种获取流程所有者的方法 (http://www.codeproject.com/Articles/14828/How-To-Get-Process-Owner-ID-and-Current-User-SID) ,但它在c#,整个项目都是在VB中。另外,当我复制代码时,我在 HANDLE 一词上出现编译错误。我不介意使用这段代码,但我无法让它工作

有谁能够帮我 ?

关注

4

1 回答 1

1
  1. translate.google.com是您的朋友。
  2. 从翻译来看,您可能有一个出色的先前调用。
  3. 由于 ManagementObjectSearcher 实现了 IDisposable,我将使用如下所示的 Using 块创建(并处置)它:

    使用搜索器作为新的 ManagementObjectSearcher(query) [...] 结束使用

这将确保searcher被正确处理,因为它引用了非托管资源。(有以前的搜索者可能是您的问题的原因。)

于 2012-12-07T21:34:59.800 回答