Sql-Server

ProcessID Owner 與第三方應用程序

  • October 24, 2015

我在嘗試使用 SQLServer 後端審核第三方應用程序時遇到問題。

該應用程序通過 SQL 表管理使用者和使用者訪問,使用單個 SQL 登錄來訪問數據庫。

我正在嘗試通過使用主機 PID 來審核這一點,就像 Windows 任務管理器為每個程序關聯一個 PID 和所有者一樣。

這是我嘗試過的和嘗試過的

  • 我能夠弄清楚如何提取app.exePID。
  • 我無法弄清楚如何讓 Windows 所有者與該 PID 關聯。
  • 我曾嘗試使用xp_cmdshell查詢 Windows 任務列表,甚至編寫了一個 .Net 控制台應用程序,該應用程序由 SQL 呼叫以收集資訊,但每次我嘗試提取所有者時它都是空白的。

關於如何獲得所有者的任何想法?

我無法弄清楚如何讓 Windows 所有者與該 PID 關聯。

您可以使用 PowerShell 獲取所有者:

# Identify the name of the remote computer you want to query
$computerName = 'SomeRemoteComputerName'
# Invoke the command on the remote system to get the information that is necessary
Invoke-Command -ComputerName $computerName -ScriptBlock {
   # Build a hashtable that associates process ids with owners
   $processOwners = @{}
   Get-WmiObject -Class Win32_Process | ForEach-Object {
       $processOwner = $_.GetOwner()
       # Combine the domain and user information together to get the process owner
       $processOwners[[int]$_.ProcessId] = $processOwner.Domain + '\' + $processOwner.User 
   }
   # Now get all processes and add the owner information to them
   Get-Process | ForEach-Object {
       $processOwner = $null
       # If we have process owner information for the process, look up the owner in the table
       if ($processOwners.ContainsKey($_.Id)) {
           $processOwner = $processOwners[$_.Id]
       }
       # Add the owner information to the current process object
       Add-Member -InputObject $_ -MemberType NoteProperty -Name Owner -Value $processOwner
       # Return the current process object from the script block
       $_
   } | Select-Object Name,Owner,Description
}

腳本源

我假設您的應用程序正在執行使用者/密碼檢查,正如您所說的它管理使用者。通過擴展事件,您可以審核登錄名和每個需要的欄位。

引用自:https://dba.stackexchange.com/questions/15812