V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xshoushoux
V2EX  ›  问与答

win 下如何允许普通用户以管理员权限运行特定的程序?

  •  
  •   xshoushoux · 2018-04-24 12:09:22 +08:00 · 4224 次点击
    这是一个创建于 2187 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们的办公电脑(最新的 win10 )一般是只给员工普通用户权限的(我们会维护一个 wim 预装好所有办公需要的软件),但是有些办公软件不只是安装而是每次运行都需要管理员权限(比如京东的京麦客户端,不知道他们的开发是怎么想的),所以想请教下有没有什么办法可以允许普通用户以管理员权限运行特定的程序,谢谢。

    4 条回复    2018-04-24 15:33:32 +08:00
    geelaw
        1
    geelaw  
       2018-04-24 12:59:50 +08:00   ❤️ 1
    对于这个特定的情况,你应该先调查京麦是否能打开一个网页,如果可以,且默认浏览器是 IE/Chrome 等,那么用户打开一个浏览器之后可以运行 cmd,从而等价于能够以管理员身份登录。

    如果上面的考虑不是问题(比如已经确定那个程序十分安全),可以这样做:写一个程序,从磁盘上读取密码,获取管理员用户的 token 并存储在内存里,让这个程序以服务的身份运行,并监听一个固定名字的来自本机的命名管道(自然,这个管道需要被 secured )的连接,通过管道和用户通信,用户告知自己处于哪个 session,然后服务以管理员身份(比如,你可以 impersonate )在目标 session 里面建立进程。

    密码文件和程序本身都需要被 secured,比如密码文件不能被普通用户读取。

    再写一个用户能访问的程序,用这个程序去连接管道并给出需要的信息。
    tony1016
        2
    tony1016  
       2018-04-24 13:10:14 +08:00
    一个普通程序,还要管理员权限,那还用它干啥。安全本来就是为用户服务的,那你现在不想要安全,还想给他管理员权限,了解一下 mimikatz
    xshoushoux
        3
    xshoushoux  
    OP
       2018-04-24 14:12:01 +08:00
    @geelaw 这么复杂啊。。。有没有类似 linux 里 /etc/sudoers 那种配置方法啊。。。
    forcecharlie
        4
    forcecharlie  
       2018-04-24 15:33:32 +08:00
    按照题主的描述,普通用户应该没有加入 Administrators 组,方法有几种,一是应用转 UWP,二是实现一个服务,然后实现一个启动器,启动器启动时与服务通讯,让服务启动 京麦。但这种方法与前面 @geelaw 所说的一样,只要京麦能够打开其他进程,就会导致权限泄露,也就等价于管理员身份登录。


    当然还有一种方法,如果京麦是通过修改 manifest 文件实现的管理员权限启动,你就可以修改 manifest,然后使用 Windows SDK mt 命令修改京麦的清单,但是如果京麦在代码中会去检测自身权限,这种修改就可能会失败,另外一些管理员权限的操作也是不能做的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5339 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:13 · PVG 17:13 · LAX 02:13 · JFK 05:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.