前提・実現したいこと
はじめて質問いたします。
よろしくお願いいたします!
リモートデスクトップにてクライアントPCから、別PC(Windows10Pro)にアクセスしたときに、クライアントPCのipアドレスを取得するEXCEL-VBAマクロを作ろうと思っています。
Windows10 pro を導入しているPCに対して、他のPC(Windows)からリモートデスクトップ接続を実行しています。
このとき接続先で起動しているEXCEL-VBAより、接続元端末のIPアドレスやホスト名を簡単に取得する方法はないでしょうか?
どの端末(IPアドレス)から接続されたかという情報を取得し、管理側として接続ログを保存したいと思っています。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/10 14:42 編集
2020/10/12 23:42
2020/10/13 15:28
2020/10/13 23:04 編集
2020/10/14 23:40
2020/10/14 23:56
2020/10/15 08:25
回答4件
0
試してないので微妙ですが、イベントログ側のアプローチがあったので、メモ代わりに回答します。
証跡系のアプリからアプローチを探すと、もっと良い案があるかもしれないです。
投稿2020/10/17 02:10
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
ホスト名でしたら環境変数に格納されているので、Environ("ClientName")
で簡単に取得できそうです。
投稿2020/10/11 00:10
編集2020/10/14 01:55総合スコア1034
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/12 23:13 編集
2020/10/14 01:42 編集
2020/10/13 02:14 編集
2020/10/13 15:41 編集
2020/10/13 17:01
2020/10/13 23:18 編集
2020/10/14 01:42
2020/10/14 01:43
2020/10/14 02:29 編集
2020/10/14 01:54
2020/10/14 02:36
2020/10/17 12:11 編集
2020/10/17 03:07 編集
2020/10/15 11:33
2020/10/15 11:50
2020/10/15 16:44 編集
2020/10/16 13:15
2020/10/16 13:19
2020/10/17 01:46 編集
2020/10/16 16:52 編集
2020/10/17 01:26
0
VBAから「netstat -n」をキックして標準出力を取得し、
正規表現などを使って「ローカル アドレス」の
ポート番号が「3389」かつ「状態」が「ESTABLISHED」に
なっている行の「外部アドレス」のIPアドレス部分を抽出する
VBA
1Sub test3() 2 3 Dim WSH, wExec, cmd As String, Result As String 4 5 6 Set WSH = CreateObject("WScript.Shell") 7 8 ' 実行したいDOSコマンド 9 cmd = "netstat -n" 10 11 ' DOSコマンドを実行 12 Set wExec = WSH.exec("%ComSpec% /c " & cmd) 13 14 ' DOSコマンドが終了するまで待機 15 Do While wExec.Status = 0 16 DoEvents 17 Loop 18 19 ' DOSコマンドの実行結果(標準出力)を取得 20 Result = wExec.StdOut.ReadAll 21 22 ' 取得した標準出力をメッセージボックスに表示 23 MsgBox Result 24 25 26 27 28 Set RE = CreateObject("VBScript.RegExp") 29 30 ' 正規表現の条件を設定 31 RE.Pattern = "^\s*\S+\s+\S+:3389\s+(\S+):\d+\s+ESTABLISHED\s*$" 32 RE.MultiLine = True ' 複数行に対して検索する指定 33 34 ' 検索 35 Set reMatch = RE.Execute(Result) 36 37 ' 最初に条件に該当した行の、最初のカッコ内(=IPアドレス部分)を取り出し 38 Cells(7, 2) = reMatch(0).SubMatches.Item(0) 39 40 41 ' オブジェクトを空に 42 Set reMatch = Nothing 43 Set RE = Nothing 44 Set wExec = Nothing 45 Set WSH = Nothing 46 47End Sub
投稿2020/10/16 16:46
編集2020/10/17 03:26総合スコア1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/17 01:43
2020/10/17 01:53 編集
2020/10/17 01:55
2020/10/17 02:00
2020/10/17 02:09 編集
2020/10/17 03:28
2020/10/17 05:43
2020/10/17 06:54
0
リモートデスクトップ接続しているときのクライアント名(pc名)を表示する方法 ###
- サーバー側PC:Windows10Pro
- サーバー側のユーザーはサインアウトしている必要あります。
- 環境変数を取得する関数を使います。
VBA
1Sub クライアント名() 2 Dim クライアント名 As String 3 クライアント名 = Environ("ClientName") 4 MsgBox クライアント名 5End Sub
投稿2020/10/16 14:53
編集2020/10/18 11:41総合スコア1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。