如何在networking连接更改时运行脚本?

我想创build一个脚本来做各种事情,当networking连接改变。 例如,如果机器连接到我的办公室networking,我可能希望它:

  • 静音本身
  • 更改其DNS
  • 更改其代理设置
  • 更改默认打印机

那么,当机器离开办公室networking时,它可能会恢复其中的一些。

据推测,“活动networking”将基于IP地址/网关范围或WIFInetworking名称等。

你有什么推荐的工具来完成这个? 我可以看到像这样的东西适用于许多IT专业人员,所以我确信有一些很好的技巧。

请注意,这是希望在networking更改时起作用 – 而不仅仅是用户login/注销时。

在Windows XP(和2000?我不记得…)中的“networking位置感知”服务( http://msdn.microsoft.com/en-us/library/ms739931(VS.85).aspx )和up会启用这个function,但是我还没有find有人写了一个应用程序来利用它。 我很想自己编写代码,但是我没有足够的备用周期来开始考虑。

这不会是一个简单的VBScript的东西,但也不会是那么多的编码。 也许有人可以拿起这个想法,并运行它。 甚至还有示例代码在http://www.microsoft.com/downloads/details.aspx?familyid=ef8a6228-f11d-4ba0-b73e-dd8dc7dd11e8&displaylang=en

曾经有很多次我想要这个function,而且我认为有不止一些人希望看到它。

您可以使用任务计划程序执行此操作:

  1. 用鼠标右键单击“任务计划程序库”
  2. 点击“创build任务”
  3. 对于“名称:”字段,写下您的新任务的名称。
  4. 检查“安全选项”区域中的checkbox,你希望他们。
  5. 在“触发器”标签下点击“新build…”
  6. select“开始任务:”=>“在事件上”
  7. select“日志:”=>“Microsoft-Windows-NetworkProfile / Operational”
  8. select“Source:”=>“NetworkProfile”
  9. 写“事件ID:”=> 10000
  10. 确定这个对话框。
  11. 在“操作”标签下,点击“新build…”
  12. select“操作:”=>“启动程序”
  13. 对于“程序/脚本:”浏览到您最喜欢的脚本文件。
  14. 确定这个对话框。
  15. 设置“条件”选项卡关于“空闲”,“交stream电源”等条件你喜欢。
  16. 另外做“设置”选项卡下的设置。
  17. 好的,都在这里完成。
  18. testing新的事件。

以防万一,也有计算机“暂停”和“恢复”在那里可用的事件。 例如,我用它们在这些事件上停止并重新启动Hamachi,否则在我的机器上似乎有问题。
对于计算机“挂起”,您可以使用日志“Microsoft-Windows-Kernel-Power / Thermal-Operational”,源“内核电源”,事件ID为42。
对于计算机“恢复”您可以使用日志“系统”,来源“电源故障排除”,事件ID是1。

对于用户login/注销,我不知道任务计划程序下的事件(但我相信它们也可用),但您可以在这里configuration它:

  1. 启动gpedit.msc
  2. 打开“用户configuration”
  3. 打开“Windows设置”
  4. 点击“脚本(login/注销)”
  5. 在右窗格中您可以为“login”和“注销”事件分配脚本。 请注意,如果分配多个脚本,则不要假定它们是同步运行的。 他们可能不会。 对于这种情况,请使用单个脚本,然后依次调用其他脚本。 我还没有检查这些脚本运行在哪个帐户下 – 是用户还是系统?

您可以在同一窗口的“计算机configuration”文件夹下为计算机“启动”和“关机”事件做类似的事情。 启动脚本在用户login之前在系统帐户下运行。

之前我已经在Net Profiles上取得了一些成功。

使用.net框架版本2可以使用System.Net.NetworkInformation命名空间。 从这里你可以确定:

networking可用性:NetworkAvailabilityChangedEventHandler()networking地址更改:NetworkAddressChangedEventHandler()ipaddress:IPAddressInformation

等等。

有多less这是通过PowerShell可用我不知道,因为我不使用它。 但是我写了一个非常简单的vb.net托盘应用程序,只监视networking可用性并在networking可用时连接到networking共享。 如果你对代码的基本知识感兴趣,请告诉我。

这是一个横向和部分的答案(甚至没有logging,因为我似乎无法find原来的文章),但我相当确定Windows 7有一个属性表在打印机对象,让您更改默认值取决于子网。

我很想看看列表中的其他function。

您可以创build一个batch file,读取ipconfig命令的结果,并每5秒钟运行一次…