C# 在.NET中模拟时,如何获取应用程序的名称
在.NET中模拟时,如何获取应用程序的名称。我不喜欢你喜欢的.NET语言是VB.NET还是C#。我基本上在做(请原谅这里的VB.NET): 没有使用“新模仿者(…)”一切都很好。当我使用“模拟者”时,我得到:C# 在.NET中模拟时,如何获取应用程序的名称,c#,.net,vb.net,C#,.net,Vb.net,在.NET中模拟时,如何获取应用程序的名称。我不喜欢你喜欢的.NET语言是VB.NET还是C#。我基本上在做(请原谅这里的VB.NET): 没有使用“新模仿者(…)”一切都很好。当我使用“模拟者”时,我得到: 当我使用模拟时,如何找到我的application.exe文件的名称?您模拟的人似乎无权访问正在运行的文件。验证它不在模拟用户不可用的某个文件夹中。例如,在服务器上运行的普通用户没有访问权限。尝试将用户设置为计算机上的本地管理员,或仅授予他对文件夹的访问权限 更简单的方法是: Proces
当我使用模拟时,如何找到我的application.exe文件的名称?您模拟的人似乎无权访问正在运行的文件。验证它不在模拟用户不可用的某个文件夹中。例如,在服务器上运行的普通用户没有访问权限。尝试将用户设置为计算机上的本地管理员,或仅授予他对文件夹的访问权限 更简单的方法是:
Process.GetCurrentProcess().ProcessName
我认为你不应该使用FileInfo
,它速度慢而且需要权限。
您可以改为使用System.IO.Path静态类我对Impersonator一无所知,但这适用于我的大多数应用程序(甚至WPF应用程序)
嗯,好主意。他可能不知道-他能想出其他方法来运行exe吗?太好了!这正是我要找的!有趣的想法,但我相信我会得到相同的“访问被拒绝”,因为冒名顶替者没有@Oskar指出的对文件的访问权。谢谢你的建议@丹尼斯,我不认为这会产生那个错误。
Path.GetFileNameWithoutExtension
和System.Windows.Forms.Application.ExecutablePath
都不需要该目录的权限
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()
Process.GetCurrentProcess().ProcessName
string name = Path.GetFileNameWithoutExtension(
System.Windows.Forms.Application.ExecutablePath);