2015-07-22 58 views
3

问题: 有没有人知道为什么批处理文件在机器启动时没有运行,直到用户通过远程桌面连接?另外,有没有办法在机器启动时执行批处理文件,而无需任何用户交互?直到用户登录才在Azure VM启动上运行批处理文件

背景: 我有一台托管在Microsoft Azure中的虚拟机。我打开了一个远程桌面会话,创建了一个启动游戏服务器(即gameserver.exe)的简单批处理文件,创建了该批处理文件的快捷方式,并将快捷方式添加到AppData/Windows /开始菜单/程序/启动。

现在,当我重新启动虚拟机从Azure管理控制台。无论等待多久,我都没有看到游戏服务器的启动。

但是,当我远程进入VM只要远程桌面会话连接我看到的批处理文件打开并开始运行,从而开始我的游戏服务器。

我能够创建一个快捷方式gameserver.exe和地点到启动文件夹,并运行,我会尽快重新启动VM期待。但是,为了在启动服务器之前配置服务器,我需要做几件不同的事情,所以我想使用批处理文件来实现它。

回答

1

我知道,使一些在服务器上运行的唯一方法是使用组策略的计算机配置为自动运行在系统启动的东西。下一步是注册表中的AutoRun键(RunOnce),用户登录时执行某些操作。下一步是PsExec,它可以定位远程计算机并运行您选择的可执行文件或脚本。

此外,您可以配置VM自动登陆用户然后锁定VM。这样,来自注册表的RunOnce将会运行,甚至可以将应用程序快捷方式放入启动文件夹中。详细了解自动登录和锁定here

1

您还可以尝试使用Windows任务计划程序。您只需创建一个具有管理员权限的任务,该任务被触发以在启动时运行程序\ exe \ batch。

这里是一个示例XML,你可以import并相应地改变。

<?xml version="1.0" encoding="UTF-16"?> 
 
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> 
 
    <RegistrationInfo> 
 
    <Date>2015-07-22T12:21:20.7566893</Date> 
 
    <Author>SRIKANTH-PC\vishwanath</Author> 
 
    <Description>sample task desc</Description> 
 
    </RegistrationInfo> 
 
    <Triggers> 
 
    <BootTrigger> 
 
     <Enabled>true</Enabled> 
 
    </BootTrigger> 
 
    </Triggers> 
 
    <Principals> 
 
    <Principal id="Author"> 
 
     <UserId>SRIKANTH-PC\vishwanath</UserId> 
 
     <LogonType>S4U</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> 
 
    <WakeToRun>false</WakeToRun> 
 
    <ExecutionTimeLimit>P3D</ExecutionTimeLimit> 
 
    <Priority>7</Priority> 
 
    </Settings> 
 
    <Actions Context="Author"> 
 
    <Exec> 
 
     <Command>F:\Projects\zipalign.exe</Command> 
 
     <WorkingDirectory>F:\Projects\</WorkingDirectory> 
 
    </Exec> 
 
    </Actions> 
 
</Task>

相关问题