プロが教える店舗&オフィスのセキュリティ対策術

下記ページ billyboyさんのサンプルプログラムを参照させて頂きました。
http://vba-geek.jp/blog-entry-314.html
このとおりに、取得したいコンピュータ名もしくはIPアドレスを設定シートに入力し
VBAを実行しましたが、イベントログが取得できませんでした。
該当PCにはpingもリモートデスクトップもできます。ファイアウォールも全て無効にしています。
一体何が原因なのでしょうか? このようなログを取得しExcelにデータ化するにはどのように
すれば良いでしょうか?

質問者からの補足コメント

  • うーん・・・

    肝心なエラー記載しておりませんでしたので下記に追記します。

    実行時エラー'462'
    リモートサーバーがないか、使用できる状態ではありません。

    'WMIオブジェクトの参照
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer(i) & "\root\cimv2")

    部分から先に進みません。 どんなPCをやっても同じです。。。。

      補足日時:2016/06/05 23:29

A 回答 (2件)

自PC(Windows7 Pro )からEventLogApp.xlsmを試した結果です。


相手PCがWindowsXP (^_^;) ならファイアウォールを無効にするだけで取得できました。
Windows7、Windows10ではさらに管理共有を有効にすることで取得できるようになりました。
(それぞれのPCに管理者権限あり、ワークグループ環境。)
https://support.microsoft.com/ja-jp/kb/947232
↑の『自分で解決する』をBATファイルにしたものを以下に置いておきます。
Windows10 Pro(10586)でも可。
ファイアウォールにしろ管理共有にしろセキュリティに関わることですので
もっとピンポイントな設定がある筈なのだが。。。orz

管理共有_切り替え.bat

rem 管理共有を有効にします。リモートシャットダウンなども可能になります。
echo off
cls

for /f "tokens=3 delims=\ " %%i in ('whoami /groups^|find "Mandatory"') do set LEVEL=%%i
rem echo %LEVEL%
if "%LEVEL%" neq "High" (
echo === 設定変更するには『管理者として実行』する必要があります。===
echo === このBATは変更するマシンのローカルにある必要があります。 ===
)

set RegAddress=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy

rem 『名前』登録されているか
reg query %RegAddress%
echo 現在の設定です。DWORDの値が 0x1 の場合は管理共有が有効です。0x0 の場合は無効。
echo;
echo === 未設定の場合には、エラーが返ってきます。===
echo;
echo --------------------------
echo [キーそのものを削除] U
echo --------------------------
echo [管理共有を有効に] S
echo --------------------------
echo [管理共有を無効に] D
echo --------------------------
echo [キャンセル] C
echo --------------------------
echo 選択は?
choice /C usdc /N > nul

IF %ERRORLEVEL%==4 GOTO Cancel
IF %ERRORLEVEL%==3 GOTO Disable
IF %ERRORLEVEL%==2 GOTO SetKey
IF %ERRORLEVEL%==1 GOTO UnSetKey
IF %ERRORLEVEL%==0 GOTO Cancel rem来ない

:UnSetKey
reg delete %RegAddress%
goto Result

:SetKey
set t= /t REG_DWORD /d 1
reg add %RegAddress%%t%
goto Result

:Disable
set t= /t REG_DWORD /d 0
reg add %RegAddress%%t%
goto Result

:Cancel
echo キャンセルが選択されました。
timeout /t 3
exit

:Result
echo;
echo 操作結果
reg query %RegAddress%
echo 終了します。何かキーを押してください。
pause>nul
    • good
    • 0

私は、詳しいことはわからないけれども、



>'WMIオブジェクトの参照
>Set objWMIService = GetObject("winmgmts:" _
>& "{impersonationLevel=impersonate}!\\" & strComputer(i) & >"\root\cimv2")

これって、スタンドアロンのPCだったら、
通例

strComputer = "."

このように登録しているはずです。strComputer(i) で配列をしても、呼び出せないのではないでしょうか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!