代码之家  ›  专栏  ›  技术社区  ›  Derek Ekins

在Ruby中以用户身份创建流程

  •  1
  • Derek Ekins  · 技术社区  · 15 年前

    下面的代码在一个名为run.rb的文件中,其思想是以不同的用户身份运行Ruby,这样我就可以进行一些测试。

    require 'rubygems'
    require 'win32/process'
    
    domain = 'WORLDWIDE'
    user_name = 'user'
    password = 'password'
    rubyScript = 'ruby test.rb'
    Process.create(:command_line => rubyScript, :domain => domain, :with_logon => user_name, :password => password, :close_handles => false)
    

    test.rb的内容是:

    require 'rubygems'
    require 'watir'
    
    browser = Watir::IE.new
    browser.goto('http://localhost:44001/Users/List')
    puts browser.text
    

    当我运行“ruby run.rb”时,一个命令shell打开,然后立即关闭。 你知道我在这里做错什么吗?

    2 回复  |  直到 14 年前
        1
  •  0
  •   ZiggyTheHamster Eli    14 年前

    恢复一个死问题,但在WindowsNT中,其他用户不能与您的桌面交互。所以如果你以 DOMAIN\user1 产生一个过程 DOMAIN\user2 , the 域\用户2 进程无法与交互 域\用户1 的桌面。例外情况是,如果进程作为服务运行,并且在服务属性中选中了“可与桌面交互”框(但我认为这要求它以 SYSTEM )

    可以使用本地安全策略(secpol.msc)将用户权限分配给允许该用户与每个人的桌面交互的用户,但如果授予该用户交互登录的权限,则这样做是不安全的。

        2
  •  0
  •   Trotter    15 年前

    它可能运行的命令很好,打开一个新的命令窗口(因为它是一个新的Windows进程),然后在完成时关闭该窗口。尝试在test.rb的末尾抛出“sleep 1000”。如果我是对的,那 应该 保持窗口在周围,以便您可以查看输出。