0

.NETで偽装するときにアプリケーションの名前を取得するにはどうすればよいですか。VB.NETまたはC#が好きな.NET言語は好きではありません。私は本質的にやっています(ここでは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("."))

「NewImpersonator(...)」を使用しなくても、すべて問題ありません。「なりすまし」を使用すると、次のようになります。

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ファイルの名前を確認するにはどうすればよいですか?

4

2 に答える 2

1

Impersonator については何も知りませんが、これはほとんどのアプリケーション (WPF アプリでも) で機能します。

    string name = Path.GetFileNameWithoutExtension(
                    System.Windows.Forms.Application.ExecutablePath);
于 2012-04-25T00:52:45.033 に答える
1

あなたが偽装している人物は、実行中のファイルにアクセスできないようです。偽装されたユーザーが使用できないフォルダーに含まれていないことを確認します。たとえば、サーバー上で実行している場合、通常のユーザーはアクセスできません。ユーザーをコンピューターのローカル管理者として設定するか、フォルダーへのアクセスを許可してみてください。

簡単な方法は次のとおりです。

Process.GetCurrentProcess().ProcessName

を使用するべきではないと思いますFileInfo。これは遅く、権限が必要です。代わりに System.IO.Path 静的クラスを使用できます

于 2012-04-24T21:20:04.543 に答える