要安装驱动程序,您通常会发送命令:
DefaultInstall 128 {inf 路径}
通过直接调用或 RunDLL 到 InstallHinfSection。
这很好用。我可以在任何地方安装我的驱动程序(包括 64 位 Win 2008 R2,这意味着我也有所有代码签名)。
但是,从 Windows 服务启动时,上述操作失败。我已经阅读了有关服务与客户端安装的信息,并希望我已经满足静默服务安装的所有要求(构建一个 .CAT 文件,它与驱动程序一起签名,等等)。
但没有骰子 - 它只是失败了。比较交互式安装和从服务安装之间的 SetupAPI.log 中的错误没有显示任何差异(除了交互式采取复制驱动程序文件的步骤并成功,而另一个则没有)。
驱动程序本身未被使用(我的服务是唯一使用它的服务)。有没有什么方法可以让服务在不需要用户交互的情况下静默更新驱动程序?
最佳答案
我调用 Microsoft 并与支持工程师讨论了这个问题。
事实证明,将 DefaultInstall 与 InstallHinfSection 一起使用有点过时,但仍然有效。如果驱动程序是由他们认可的证书签名的,它恰好可以在不提示用户的情况下工作,因为 DefaultInstall 是“愚蠢的”。然而,驱动程序本身仍被允许启动,因为它与 Microsoft 证书交叉签名。我想这是一个不错的小漏洞。诀窍是它必须由设置为与桌面交互(要求)的服务安装。如果您的服务当前未以这种方式运行,则可以使用 PsExec 或 RemCom 之类的工具来执行此操作。
在未来,这可能不会继续有效。那时,将驱动程序的 .cat 文件放入 Windows\System32\Catroot{F7... 文件夹,但它不能直接复制进去——有一个 API。
如果 .cat 是最先放入的,那么理论上驱动程序不需要提示询问驱动程序的证书是否为用户所接受,因为 catroot 是“用户可接受”的证书列表,司机。
此外,在尝试安装驱动程序之前安装目录文件可能会有所帮助,因为目录包含驱动程序将提供的安全证书(虽然在这种情况下不一定 - 但它可能在将来有所帮助(并且可能与 Win 2003)
基本上,支持工程师对它的工作原理感到惊讶,我们四处寻找它可能如何工作......希望这对其他人有帮助。
关于windows - 从 Windows 服务安装/更新驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7958760/
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
我打算为ruby脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r