文章一:
快捷方式实质上是一个扩展名为 .LNK 的文件
方法如下:
首先要添加引用 (如图)
就是那个Windows Script Host Object Model的类库....
然后在程序中引入命名空间
using IWshRuntimeLibrary;
有一些文件操作,所有要引入
using System.IO;
关键方法如下:
/// <summary>
/// 创建桌面快捷方式并开机启动的方法
/// </summary>
private void ShortcutAndStartup()
{
// 获取当前系统用户启动目录
string startupPath = Environment.GetFolderPath(Environment.SpecialFolder.Startup);
// 获取当前系统用户桌面目录
string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
FileInfo fileStartup = new FileInfo(startupPath + " //亿掌通.lnk " );
FileInfo fileDesktop = new FileInfo(desktopPath + " //亿掌通.lnk " );
if ( ! fileDesktop.Exists)
{
WshShell shell = new WshShell();
IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(
Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) +
" // " + " 亿掌通.lnk "
);
shortcut.TargetPath = Application.StartupPath + " // " + " Upgrade.exe " ; // 启动更新程序★
shortcut.WorkingDirectory = System.Environment.CurrentDirectory;
shortcut.WindowStyle = 1 ;
shortcut.Description = " 亿掌通 " ;
shortcut.IconLocation = Application.ExecutablePath;
shortcut.Save();
}
if ( ! fileStartup.Exists)
{
// 获取可执行文件快捷方式的全部路径
string exeDir = desktopPath + " //亿掌通.lnk " ;
// 把程序快捷方式复制到启动目录
System.IO.File.Copy(exeDir, startupPath + " //亿掌通.lnk " , true );
}
}
/// 创建桌面快捷方式并开机启动的方法
/// </summary>
private void ShortcutAndStartup()
{
// 获取当前系统用户启动目录
string startupPath = Environment.GetFolderPath(Environment.SpecialFolder.Startup);
// 获取当前系统用户桌面目录
string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
FileInfo fileStartup = new FileInfo(startupPath + " //亿掌通.lnk " );
FileInfo fileDesktop = new FileInfo(desktopPath + " //亿掌通.lnk " );
if ( ! fileDesktop.Exists)
{
WshShell shell = new WshShell();
IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(
Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) +
" // " + " 亿掌通.lnk "
);
shortcut.TargetPath = Application.StartupPath + " // " + " Upgrade.exe " ; // 启动更新程序★
shortcut.WorkingDirectory = System.Environment.CurrentDirectory;
shortcut.WindowStyle = 1 ;
shortcut.Description = " 亿掌通 " ;
shortcut.IconLocation = Application.ExecutablePath;
shortcut.Save();
}
if ( ! fileStartup.Exists)
{
// 获取可执行文件快捷方式的全部路径
string exeDir = desktopPath + " //亿掌通.lnk " ;
// 把程序快捷方式复制到启动目录
System.IO.File.Copy(exeDir, startupPath + " //亿掌通.lnk " , true );
}
}
文章二:
创建桌面快捷方式+设置开机启动代码[C#、WinForm]
注意:
1.创建桌面快捷方式需要引用IWshRuntimeLibrary类库
2.设置开机启动需要使用Microsoft.Win32的Registry类
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; //----------------------- using System.IO; using Microsoft.Win32; using IWshRuntimeLibrary; namespace OneApp { public partial class FormOption : Form { public FormOption() { InitializeComponent(); } private void FormOption_Load(object sender, EventArgs e) { //检查是否开机启动 RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run", true);//打开注册表子项 if (key == null) { key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE/Microsoft/Windows/CurrentVersion/Run"); } checkBox1.Checked = (key.GetValue("发货审核") != null); key.Close(); //检查是否建立桌面快捷方式 bool b = System.IO.File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "//" + "发货审核.lnk"); checkBox2.Checked = b; } private void buttonOption_Click(object sender, EventArgs e) { //设置为开机启动 RunWhenStart(checkBox1.Checked, "发货审核", Application.ExecutablePath); //创建桌面快捷方式 CreateDesktopLink(checkBox2.Checked); } private void RunWhenStart(bool Started, string name, string path) { RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run", true);//打开注册表子项 if (key == null) { key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE/Microsoft/Windows/CurrentVersion/Run"); } if (Started == true)//设置开机启动 { try { key.SetValue(name, path); key.Close(); } catch (Exception Err) { MessageBox.Show(Err.Message); } } else//取消开机启动 { try { if (key.GetValue(name) != null) { key.DeleteValue(name, false); key.Close(); } } catch (Exception Ex) { MessageBox.Show(Ex.Message); } } } private void CreateDesktopLink(bool Created) { if (Created == true) { //先判断是否存在 if (!System.IO.File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "//" + "发货审核.lnk")) { WshShell shell = new WshShell(); IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut( Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "//" + "发货审核.lnk" ); shortcut.TargetPath = System.Reflection.Assembly.GetExecutingAssembly().Location; shortcut.WorkingDirectory = System.Environment.CurrentDirectory; shortcut.WindowStyle = 1; //Normal window shortcut.Description = "发货审核插件"; //shortcut.IconLocation = System.Environment.SystemDirectory + "//" + "shell32.dll, 165"; shortcut.Save(); } } else { //先判断是否存在 if (System.IO.File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "//" + "发货审核.lnk")) { System.IO.File.Delete(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "//" + "发货审核.lnk"); } } } } }