在 .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文件的名称?
您模拟
的人似乎无权访问正在运行的文件。验证它不在模拟用户不可用的某个文件夹中。例如,在服务器上运行普通用户没有访问权限。尝试将用户设置为计算机上的本地管理员,或者仅授予他访问文件夹的权限。
更简单的方法是:
Process.GetCurrentProcess().ProcessName
我认为你不应该使用FileInfo
,这很慢,需要权利。您可以改用 System.IO.Path 静态类
我对
模仿者一无所知,但这适用于我的大多数应用程序(甚至是 WPF 应用程序)。
string name = Path.GetFileNameWithoutExtension(
System.Windows.Forms.Application.ExecutablePath);