打开远程WMI的防火墙

时间:2015-08-04 20:36:07

标签: vba windows-firewall

我目前使用try { $hostname = '192.168.5.57:1433'; $dbname = 'Test'; $username = 'testuser'; $password = 'thisismypassword'; $db = new PDO("dblib:host=$hostname;dbname=$dbname","$username","$password"); } catch (PDOException $e) { echo 'Failed to get DB handle: ' . $e->getMessage(); } winrs更改远程PC上的防火墙规则,以便查询WMI。

shell

有没有更好的方法来执行此操作,不会弹出错误地窃取焦点的CMD窗口?

扩展我的问题: 我的团队领导者并不是最懂技术的人,所以我在Excel工作簿中创建了一堆宏,这些宏可以让他们做各种事情(比如在启用/禁用USB存储器之间切换,或者暂时将用户提升为本地管理员)等)。一切正常,但是我的团队领导对于这样一个事实感到恼火:当他们运行命令时,会弹出一个CMD窗口并暂时关注焦点(即使我指定了strCMD = "winrs -r:" & strHost & " netsh advfirewall firewall set rule group=" _ & Chr(34) & "Windows Management Instrumentation (WMI)" & Chr(34) _ & " new enable=yes" Shell "cmd.exe /S /C" & strCMD, vbMinimizedNoFocus )。我不知道打开防火墙的另一种方法,这样当他们只是本地管理员而不是域管理员时,他们可以执行各种任务。是否有API或COM对象或我可以在VBA中引用以远程更改防火墙设置?或者是否有另一种方法可以调用vbMinimizedNoFocus ...就像Shell那样可以在没有CMD窗口弹出的情况下工作?

1 个答案:

答案 0 :(得分:1)

是的,使用WScript.Shell对象的Run方法代替Shell函数应该有效:

Set sh = CreateObject("WScript.Shell")
sh.Run "cmd.exe /S /C " & strCMD, 0, True