none
任务计划程序中的管理员身份权限问题 RRS feed

  • 问题

  • 各位大大好。

    我以前在server08R2系统上安装了一个第三方的进销存服务器端软件,CS架构,该软件需要在登陆系统后手动执行一个连接数据库的后台进程。
    由于这软件比较老,在08R2下需要手动用管理员权限运行它,才能正常工作,很是麻烦。
    尝试过将其快捷方式加入启动里,但不能解决提权问题,而且如果重启后不登陆,也不会自动运行。

    后来想了一个办法,利用任务计划程序来解决。并且测试成功,导出后的任务代码如下——

    <?xml version="1.0" encoding="UTF-16"?>
    <Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
      <RegistrationInfo>
        <Date>2016-10-11T17:02:32.0394654</Date>
        <Author>ZDART\svr2</Author>
        <Description>D:\CFO\BZB86\server\mStdServer.exe</Description>
      </RegistrationInfo>
      <Triggers>
        <BootTrigger>
          <Enabled>true</Enabled>
        </BootTrigger>
        <CalendarTrigger>
          <StartBoundary>2016-10-11T04:00:00</StartBoundary>
          <Enabled>true</Enabled>
          <ScheduleByDay>
            <DaysInterval>1</DaysInterval>
          </ScheduleByDay>
        </CalendarTrigger>
      </Triggers>
      <Principals>
        <Principal id="Author">
          <UserId>ZDART\svr2</UserId>
          <LogonType>Password</LogonType>
          <RunLevel>HighestAvailable</RunLevel>
        </Principal>
      </Principals>
      <Settings>
        <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
        <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
        <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
        <AllowHardTerminate>true</AllowHardTerminate>
        <StartWhenAvailable>false</StartWhenAvailable>
        <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
        <IdleSettings>
          <StopOnIdleEnd>true</StopOnIdleEnd>
          <RestartOnIdle>false</RestartOnIdle>
        </IdleSettings>
        <AllowStartOnDemand>true</AllowStartOnDemand>
        <Enabled>true</Enabled>
        <Hidden>false</Hidden>
        <RunOnlyIfIdle>false</RunOnlyIfIdle>
        <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
        <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
        <WakeToRun>true</WakeToRun>
        <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
        <Priority>7</Priority>
        <RestartOnFailure>
          <Interval>PT5M</Interval>
          <Count>3</Count>
        </RestartOnFailure>
      </Settings>
      <Actions Context="Author">
        <Exec>
          <Command>D:\CFO\BZB86\server\mStdServer.exe</Command>
          <WorkingDirectory>D:\CFO\BZB86\server\</WorkingDirectory>
        </Exec>
      </Actions>
    </Task>

    策略就是开机后自启,勾上了“使用最高权限运行”,同时每天半夜4点钟重复运行一次。
    我另外还有一个计划任务在每天4点前taskkill /f /im mStdServer.exe 

    -------------------------------------------下面说问题。

    我最近在尝试把这软件移植到新的server 2016系统上,我安装好这个进销存软件后,在计划任务里导入了上面的xml文件
    使用输入本机的账号密码后,能看见任务管理器中出现该进程,但是用CS架构中的客户端测试连接失败。
    我猜想可能是管理员身份权限的问题,因为如果不在任务计划中运行的话,手动右键用管理员权限运行它,是可以正常使用的。
    我仔细观察任务管理器中两种方式的区别,计划任务方式运行出来的exe进程,任务管理器-进程-命令行里的路径是没有引号的,手动提权运行会有引号。

    请问在server2016里我这个问题应该如何解决?

    2017年4月28日 4:14

全部回复

  • 我新建了一个server2012的虚拟机去测试,发现问题和server2016一样
    但是我又新建了一个server08r2做测试,导入该任务计划就能正常工作,不明白到底差异出在什么地方。

    • 已编辑 bobwang 2017年5月4日 4:05
    2017年5月3日 6:07
  • 你好,

    我建议试一下禁用 UAC, 更改注册表键值 EnableLUA 到 0,然后重启,具体路径如下:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system

    Best Regards,

    Amy


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    2017年5月5日 10:13
    版主
  • 你好,

    请问现在有进展了吗?

    Best Regards,

    Amy


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    2017年5月9日 12:01
    版主
  • 既然進程列表裏有, 那麼應該是不是被 UAC 阻止了, 至少不是所有關聯進程被阻止.

    建議通過

    wmic process where name="PROC_NAME" get processid, parentprocessid, commandline

    獲取進程的核心信息: 進程 ID, 父進程 ID, 特別是命令行, 看是否缺少了某些參數.

    對於任務計劃, 嘗試勾選以交互式方式運行.

    Folding@Home

    2017年5月10日 2:55