在 .NET 中模拟时如何获取应用程序的名称

本文关键字:获取 应用程序 NET 模拟 何获取 | 更新日期: 2023-09-27 18:32:12

.NET 中模拟时如何获取应用程序的名称。我对你喜欢的 .NET 语言没有任何偏好 VB.NET 或 C#。我基本上在做(请原谅 VB.NET 这里):

theImpersonator = New Impersonator("username", "domain", "password")
Dim finfo As New FileInfo(Process.GetCurrentProcess().MainModule.FileName)
Dim appname As String = finfo.Name.Substring(0, finfo.Name.IndexOf("."))

不使用"新模仿者(...)"一切都很好。当我使用"模仿者"时,我得到:

Access is denied
   at System.Diagnostics.ProcessManager.OpenProcess(Int32 processId, Int32 access, Boolean throwIfExited)
   at System.Diagnostics.NtProcessManager.GetModuleInfos(Int32 processId, Boolean firstModuleOnly)
   at System.Diagnostics.NtProcessManager.GetFirstModuleInfo(Int32 processId)
   at System.Diagnostics.Process.get_MainModule()

使用模拟时,如何找出应用程序.exe文件的名称?

在 .NET 中模拟时如何获取应用程序的名称

您模拟

的人似乎无权访问正在运行的文件。验证它不在模拟用户不可用的某个文件夹中。例如,在服务器上运行普通用户没有访问权限。尝试将用户设置为计算机上的本地管理员,或者仅授予他访问文件夹的权限。

更简单的方法是:

Process.GetCurrentProcess().ProcessName

我认为你不应该使用FileInfo,这很慢,需要权利。您可以改用 System.IO.Path 静态类

我对

模仿者一无所知,但这适用于我的大多数应用程序(甚至是 WPF 应用程序)。

    string name = Path.GetFileNameWithoutExtension(
                    System.Windows.Forms.Application.ExecutablePath);