开机自动启动exe的方案 :

http://www.easy-dotnet.com/pages/windows-services

1、注册windows服务

2、菜单startup启动

3、windows计划任务

4、ASP.NET Core轻量级作业调度Job任务框架

共享:加域和没有加域的电脑共享可能不行,windows版本或者ghost系统的差异,导致共享或者免密共享都导致实施费时费力,效果不好。这个时候改代码的代价就高了,还累,不稳定,迭代,需要时间。

1、注册windows服务

asp.net core程序,访问共享文件夹文件读写有问题。注册时候换一下账号不知道行不行,自己测试。

解决办法:

1、共享,把自己电脑开共享,让aoi电脑传数据到自己电脑,然后自己电脑的asp.net 可用访问。但是自己电脑加域后,共享也是问题,网络问题等,导致aoi电脑访问共享有问题。

2、aoi电脑共享文件夹,自己电脑访问共享文件夹\\192.168.137.1\ccd1\xxx.csv。这服务里面运行asp.net core程序访问不了,不知把服务的账号换一下不知行不行。

2、菜单startup启动

  1. 一种是通过创建二进制文件的快捷方式放到 Windows 开机启动目录下 (加域电脑,可能会删掉)
  2. 另外一种则是把自启动信息写入注册表,但是这种方式需要管理员权限
#当前用户
C:\Users\{{username}}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

#所有用户
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
#当前用户
shell:startup

#所有用户
shell:common startup
/// <summary>
/// 为本程序创建一个开机启动快捷方式
/// </summary>
public static bool ShortCutCreate()
{
	bool Result = false;
	try
	{
		var shellType = Type.GetTypeFromProgID("WScript.Shell");
		dynamic shell = Activator.CreateInstance(shellType);
		var shortcut = shell.CreateShortcut(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Startup), Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().Location) + ".lnk"));
		shortcut.TargetPath = Assembly.GetEntryAssembly().Location;
		shortcut.Arguments = string.Empty;
		shortcut.WorkingDirectory = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
		shortcut.Save();
		Result = true;
	}
	catch
	{
		Result = false;
	}
	return Result;
}

另外需要一个检测当前源文件快捷方式是否已经存在的方法,检测逻辑则为目标目录(开机启动目录)下所有的快捷方式的源文件绝对路径是否与当前程序二进制文件绝对路径相等,若想等则当前程序已经是开机启动,否则开机不启动,主要代码如下

public static bool ShortCutExist(string path, string target)
{
	bool Result = false;
	List<string> list = GetDirectoryFileList(target);//获取指定文件夹下的所有快捷方式(不包括子文件夹)
	foreach (var item in list)
	{
		if (path == GetAppPathViaShortCut(item))//获取快捷方式中的目标(可执行文件的绝对路径)
		{
			Result = true;
		}
	}
	return Result;
}

public static string GetAppPathViaShortCut(string shortCutPath)
{
	try
	{
		WshShell shell = new WshShell();
		IWshShortcut shortct = (IWshShortcut)shell.CreateShortcut(shortCutPath);
		return shortct.TargetPath;
	}
	catch
	{
		return null;
	}
}

http://www.zggsong.com/posts/coding/csharp-startup

3、Windows计划任务

4、ASP.NET Core轻量级作业调度Job任务框架

阅读剩余
THE END