如何让用户在没有pipe理员权限的情况下更改networking设置,托pipenetworking模式更改,runas

我希望普通用户能够在没有pipe理员权限的情况下将本地无线网卡切换到托pipenetworking(windows softAP模式)。

这里的netsh命令很清楚

netsh wlan set hostednetwork mode=allow ssid=$WLANSSID key=$WLANKEY 

因为我不希望用户能够安装软件,我不授予他们本地pipe理员权限。

我知道那里有几个产品,encryptionrunas密码,但http://micksmix.wordpress.com/2013/03/20/capturing-credentials-from-encrypted-runas-software/显示,Windows API界面显示明文密码。

我更喜欢一些想法:)

这看起来像服务控制pipe理器(SCM)的工作。 SCM已经配备安全地存储凭证,并且安全地执行与交互式用户不同的上下文中的程序。 非pipe理员用户将无法访问凭证或直接与用于执行服务的安全上下文进行交互,但是如果他们有权限,他们将被允许启动/停止服务。

首先,了解可以将非服务程序作为服务运行是非常重要的。 它会产生一个错误消息(服务将不会显示“已启动”),但程序将执行。 如果你的netsh这样的命令执行并立即退出,那么将其作为“服务”运行就可以很好地完成你所需要的任务。 (更长时间运行的命令会有问题,因为当它们没有正确响应时,SCM最终会终止它们。)

我没有用netshtesting过,但是我确实使用了另一个命令( net user bob /add )来“certificate”服务控制pipe理器。

  • 创build一个服务来执行你的命令: sc create ServiceName binPath= "netsh wlan set hostednetwork mode=allow ssid=$WLANSSID key=$WLANKEY"

  • 修改服务上的安全描述符以允许“用户”启动/停止服务(无耻地从我的另一个服务器故障回答中获取 ): sc sdset ServiceName D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)(A;;RPWPDT;;;S-1-5-32-545)

  • 作为受限用户启动服务。 sc start SerivceName

您将收到错误1053“该服务没有及时响应启动或控制请求。” netsh命令执行并终止之后。 netsh命令将在SYSTEM安全上下文中运行。


如果你需要用户能够与命令行交互,那么这变得更加复杂。 您可能可能编写了某种巴洛克脚本,以允许用户指定参数,然后通过“服务”parsing并提供给netsh的脚本读取这些参数。 但是,你会非常小心的是,你不会无意中让有限的用户能够在构build这个系统的时候随意的执行代码。