日韩欧美人妻无码精品白浆,www.大香蕉久久网,狠狠的日狠狠的操,日本好好热在线观看

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C# 實(shí)現(xiàn)軟件開機(jī)自啟動(dòng)(不需要管理員權(quán)限)

admin
2025年5月7日 12:14 本文熱度 793

原理簡(jiǎn)介

本文參考C#/WPF/WinForm/程序?qū)崿F(xiàn)軟件開機(jī)自動(dòng)啟動(dòng)的兩種常用方法,將里面中的第一種方法做了封裝成AutoStart類,使用時(shí)直接兩三行代碼就可以搞定。
自啟動(dòng)的原理是將軟件的快捷方式創(chuàng)建到計(jì)算機(jī)的自動(dòng)啟動(dòng)目錄下(不需要管理員權(quán)限),這種方法更加通用、限制更少。
使用方法
使用方法如下:

//快捷方式的描述、名稱的默認(rèn)值是當(dāng)前的進(jìn)程名,自啟動(dòng)默認(rèn)為正常窗口,一般情況下不需要手動(dòng)設(shè)置
//設(shè)置快捷方式的描述,
AutoStart.Instance.QuickDescribe = "軟件描述";
//設(shè)置快捷方式的名稱
AutoStart.Instance.QuickName = "軟件名稱";
//設(shè)置自啟動(dòng)的窗口類型,后臺(tái)服務(wù)類的軟件可以設(shè)置為最小窗口
AutoStart.Instance.WindowStyle = WshWindowStyle.WshMinimizedFocus;

//快捷方式設(shè)置true時(shí),有就忽略、沒有就創(chuàng)建,自啟動(dòng)快捷方式只能存在一個(gè)
//設(shè)置開機(jī)自啟動(dòng),true 自啟動(dòng),false 不自啟動(dòng)
AutoStart.Instance.SetAutoStart(SysParam.Instance.OnOff);
//設(shè)置桌面快捷方式,true 創(chuàng)建桌面快捷方式(有就跳過,沒有就創(chuàng)建),false 刪除桌面快捷方式
AutoStart.Instance.SetDesktopQuick(true);

完整代碼

引用以下命名空間:

//添加引用,在 Com 中搜索 Windows Script Host Object Model
using IWshRuntimeLibrary;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;

AutoStart類代碼:

public class AutoStart
{
    #region 公開

    /// <summary>
    /// 唯一實(shí)例,也可以自定義實(shí)例
    /// </summary>
    public static AutoStart Instance { getprivate set; } = new AutoStart();

    /// <summary>
    /// 快捷方式描述,默認(rèn)值是當(dāng)前的進(jìn)程名
    /// </summary>
    public string QuickDescribe { getset; } = Process.GetCurrentProcess().ProcessName;

    /// <summary>
    /// 快捷方式名稱,默認(rèn)值是當(dāng)前的進(jìn)程名
    /// </summary>
    public string QuickName { getset; } = Process.GetCurrentProcess().ProcessName;

    /// <summary>
    /// 自啟動(dòng)窗口類型,默認(rèn)值是正常窗口
    /// </summary>
    public WshWindowStyle WindowStyle { getset; } = WshWindowStyle.WshNormalFocus;

    /// <summary>
    /// 設(shè)置開機(jī)自動(dòng)啟動(dòng)-只需要調(diào)用改方法就可以了參數(shù)里面的bool變量是控制開機(jī)啟動(dòng)的開關(guān)的,默認(rèn)為開啟自啟啟動(dòng)
    /// </summary>
    /// <param name="onOff">自啟開關(guān)</param>
    public void SetAutoStart(bool onOff = true)
    {
        if (onOff)//開機(jī)啟動(dòng)
        {
            //獲取啟動(dòng)路徑應(yīng)用程序快捷方式的路徑集合
            List<string> shortcutPaths = GetQuickFromFolder(systemStartPath, appAllPath);
            //存在2個(gè)以快捷方式則保留一個(gè)快捷方式-避免重復(fù)多于
            if (shortcutPaths.Count >= 2)
            {
                for (int i = 1; i < shortcutPaths.Count; i++)
                {
                    DeleteFile(shortcutPaths[i]);
                }
            }
            else if (shortcutPaths.Count < 1)//不存在則創(chuàng)建快捷方式
            {
                CreateShortcut(systemStartPath, QuickName, appAllPath, QuickDescribe,WindowStyle);
            }
        }
        else//開機(jī)不啟動(dòng)
        {
            //獲取啟動(dòng)路徑應(yīng)用程序快捷方式的路徑集合
            List<string> shortcutPaths = GetQuickFromFolder(systemStartPath, appAllPath);
            //存在快捷方式則遍歷全部刪除
            if (shortcutPaths.Count > 0)
            {
                for (int i = 0; i < shortcutPaths.Count; i++)
                {
                    DeleteFile(shortcutPaths[i]);
                }
            }
        }
        //創(chuàng)建桌面快捷方式-如果需要可以取消注釋
        //CreateDesktopQuick(desktopPath, QuickName, appAllPath);
    }

    /// <summary>
    /// 在桌面上創(chuàng)建快捷方式-如果需要可以調(diào)用
    /// </summary>
    public void SetDesktopQuick(bool isCreate)
    {
        string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
        List<string> shortcutPaths = GetQuickFromFolder(desktopPath, appAllPath);
        if (isCreate)
        {
            //沒有就創(chuàng)建
            if (shortcutPaths.Count < 1)
            {
                CreateShortcut(desktopPath, QuickName, appAllPath, QuickDescribe, WshWindowStyle.WshNormalFocus);
            }
        }
        else
        {
            //有就刪除
            for (int i = 0; i < shortcutPaths.Count; i++)
            {
                DeleteFile(shortcutPaths[i]);
            }
        }
    }

    #endregion 公開

    #region 私有

    /// <summary>
    /// 自動(dòng)獲取系統(tǒng)自動(dòng)啟動(dòng)目錄
    /// </summary>
    private string systemStartPath = Environment.GetFolderPath(Environment.SpecialFolder.Startup);

    /// <summary>
    /// 自動(dòng)獲取程序完整路徑
    /// </summary>
    private string appAllPath = Process.GetCurrentProcess().MainModule.FileName;

    /// <summary>
    /// 自動(dòng)獲取桌面目錄
    /// </summary>
    private string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);

    /// <summary>
    ///  向目標(biāo)路徑創(chuàng)建指定文件的快捷方式
    /// </summary>
    /// <param name="directory">目標(biāo)目錄</param>
    /// <param name="shortcutName">快捷方式名字</param>
    /// <param name="targetPath">文件完全路徑</param>
    /// <param name="description">描述</param>
    /// <param name="iconLocation">圖標(biāo)地址</param>
    /// <returns>成功或失敗</returns>
    private bool CreateShortcut(string directory, string shortcutName, string targetPath, string description, WshWindowStyle windowStyle, string iconLocation = null)
    {
        try
        {
            //目錄不存在則創(chuàng)建
            if (!Directory.Exists(directory)) Directory.CreateDirectory(directory);
            //合成路徑
            string shortcutPath = Path.Combine(directory, string.Format("{0}.lnk", shortcutName));
            //存在則不創(chuàng)建
            if (System.IO.File.Exists(shortcutPath)) return true;
            //添加引用 Com 中搜索 Windows Script Host Object Model
            WshShell shell = new IWshRuntimeLibrary.WshShell();
            //創(chuàng)建快捷方式對(duì)象
            IWshShortcut shortcut = (IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(shortcutPath);
            //指定目標(biāo)路徑
            shortcut.TargetPath = targetPath;
            //設(shè)置起始位置
            shortcut.WorkingDirectory = Path.GetDirectoryName(targetPath);
            //設(shè)置運(yùn)行方式,默認(rèn)為常規(guī)窗口
            shortcut.WindowStyle = (int)windowStyle;
            //設(shè)置備注
            shortcut.Description = description;
            //設(shè)置圖標(biāo)路徑
            shortcut.IconLocation = string.IsNullOrWhiteSpace(iconLocation) ? targetPath : iconLocation;
            //保存快捷方式
            shortcut.Save();
            return true;
        }
        catch (Exception ex)
        {
            string temp = ex.Message;
            temp = "";
        }
        return false;
    }

    /// <summary>
    /// 獲取指定文件夾下指定應(yīng)用程序的快捷方式路徑集合
    /// </summary>
    /// <param name="directory">文件夾</param>
    /// <param name="targetPath">目標(biāo)應(yīng)用程序路徑</param>
    /// <returns>目標(biāo)應(yīng)用程序的快捷方式</returns>
    private List<stringGetQuickFromFolder(string directory, string targetPath)
    {
        List<string> tempStrs = new List<string>();
        tempStrs.Clear();
        string tempStr = null;
        string[] files = Directory.GetFiles(directory, "*.lnk");
        if (files == null || files.Length < 1)
        {
            return tempStrs;
        }
        for (int i = 0; i < files.Length; i++)
        {
            //files[i] = string.Format("{0}\\{1}", directory, files[i]);
            tempStr = GetAppPathFromQuick(files[i]);
            if (tempStr == targetPath)
            {
                tempStrs.Add(files[i]);
            }
        }
        return tempStrs;
    }

    /// <summary>
    /// 獲取快捷方式的目標(biāo)文件路徑-用于判斷是否已經(jīng)開啟了自動(dòng)啟動(dòng)
    /// </summary>
    /// <param name="shortcutPath"></param>
    /// <returns></returns>
    private string GetAppPathFromQuick(string shortcutPath)
    {
        //快捷方式文件的路徑 = @"d:\Test.lnk";
        if (System.IO.File.Exists(shortcutPath))
        {
            WshShell shell = new WshShell();
            IWshShortcut shortct = (IWshShortcut)shell.CreateShortcut(shortcutPath);
            //快捷方式文件指向的路徑.Text = 當(dāng)前快捷方式文件IWshShortcut類.TargetPath;
            //快捷方式文件指向的目標(biāo)目錄.Text = 當(dāng)前快捷方式文件IWshShortcut類.WorkingDirectory;
            return shortct.TargetPath;
        }
        else
        {
            return "";
        }
    }

    /// <summary>
    /// 根據(jù)路徑刪除文件-用于取消自啟時(shí)從計(jì)算機(jī)自啟目錄刪除程序的快捷方式
    /// </summary>
    /// <param name="path">路徑</param>
    private void DeleteFile(string path)
    {
        FileAttributes attr = System.IO.File.GetAttributes(path);
        if (attr == FileAttributes.Directory)
        {
            Directory.Delete(path, true);
        }
        else
        {
            System.IO.File.Delete(path);
        }
    }

    #endregion 私有
}

總結(jié)

在本文中,我們探討了如何使用C#語(yǔ)言實(shí)現(xiàn)應(yīng)用程序在系統(tǒng)啟動(dòng)時(shí)自動(dòng)運(yùn)行的功能,同時(shí)避免了對(duì)管理員權(quán)限的需求。通過這種方法,用戶可以在不進(jìn)行額外配置的情況下,確保應(yīng)用程序隨系統(tǒng)啟動(dòng)而自動(dòng)加載,極大地提高了使用的便捷性和程序的可用性。


該文章在 2025/5/7 12:14:17 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

国产高潮久久高清无码| 欧美一级免费区| 你懂得在线一区二区| 中文字幕日韩有码国产一区二区| 精品成人人妻一区二区| 92精品一二区| 美黄色电影久久久久久久久久 | 亚洲黄色录相视频在线观看| 无码一区二区h| 日b爽视频在线观看| 国产区aa枫花恋| 美女的小穴視頻| 黄色中文大片| 久久免费日韩| 五月婷婷无码一区二区三区| 欧美日韩一级黄色夫妻| 在线免费看草B| 偷拍自拍欧美日本| 有码午夜| 欧美超碰国产精品| 麻豆传媒无码一区二区| 少妇人妻综合久久中文字幕蜜臀| 天天日一日射一射舔一舔| 人妻秘書无码| 欧美日韩成人一区二区三区| 大香蕉视频观看伊人在线| 色呦呦在线免费看| 婷婷最新加勒比| 黄色电影网站欧美| 国产图欧美图在线| 欧美精品一区二区三区高清视频 | 久久AV一区黑人AV一区| 哪里有毛片看99| AV日韩黑人久久| 欧美成人图片在线免费观看| 男女操b开原| 日本精品成人无码中文字幕网址| 日韩欧美中文不卡二区| 日韩欧美真人在线观看| 成人大香交视频| 91chengren在线视频|