1.问题或需求描述:
程序自我重启,或在局域网环境下更新重启。
2.解决方法或原理:
可创建前台或后台 cmd进程,实现程序更新重启。
C#代码:
...
using System.Diagnostics;
using System.IO;
...
private void Restart()
{
//获得当前程序信息
Process cur = Process.GetCurrentProcess();
FileInfo fi = new FileInfo(cur.MainModule.FileName);
try
{
Process subPro = new Process();
subPro.StartInfo.UseShellExecute = true;
subPro.StartInfo.FileName = "cmd";
subPro.StartInfo.Arguments = " /q /c echo 请勿中断,正在重启程序... & ping -n 3 127.1 1>nul 2>nul & taskkill /pid "
+ cur.Id + " 1>nul 2>nul & start \"\" /max \""
+ cur.MainModule.FileName + "\"";
subPro.StartInfo.CreateNoWindow = false;
subPro.Start();
}
catch
{
//Add your code
}
finally
{
Close();
}
}
private void Update()
{
try
{
//网络程序位置定义
const string sNetExePath = @"\\192.168.158.25\setup\Test\test.exe";
//获得当前程序信息
Process cur = Process.GetCurrentProcess();
FileInfo fi = new FileInfo(cur.MainModule.FileName);
//获得网络位置程序信息
FileInfo fi2 = new FileInfo(sNetExePath);
//比较文件修改时间戳,如果网络文件较新则更新本地程序并重启
if (DateTime.Compare(fi2.LastWriteTime, fi.LastWriteTime) > 0)
{
try
{
Process subPro = new Process();
subPro.StartInfo.UseShellExecute = true;
subPro.StartInfo.FileName = "cmd";
subPro.StartInfo.Arguments = " /q /c echo 请勿中断,正在更新程序... & ping -n 3 127.1 1>nul 2>nul & taskkill /pid "
+ cur.Id + " 1>nul 2>nul & copy /y \""
+ sNetExePath + "\" \""
+ cur.MainModule.FileName
+ "\" 1>nul 2>nul && start \"\" /max \""
+ cur.MainModule.FileName + "\"";
subPro.StartInfo.CreateNoWindow = false;
subPro.Start();
}
catch
{
}
finally
{
Close();
}
}
}
catch
{
}
}
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
分享题目:程序自我重启---实用方法-创新互联
网站URL:https://www.cdcxhl.com/article38/dccisp.html
成都网站建设公司_创新互联,为您提供定制网站、关键词优化、电子商务、域名注册、企业网站制作、移动网站建设
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联