首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET 服務端生成桌面/收藏夾/開始菜單 URL 快捷方式代碼實現

     編輯:ASP.NET 基礎

本文提供一個 ASP.NET 服務端類,利用 System.Environment.SpecialFolder 獲取系統特殊文件夾路徑,創建 .url 格式的 Internet 快捷方式文件,實現將網站鏈接發布到用戶桌面、收藏夾、鏈接欄、開始菜單等位置。注意:此代碼運行在**服務器端**,僅適用於服務器與客戶端共享文件系統的內網/特殊場景,公網環境無法直接作用於客戶端機器。

核心實現:CreateShortcut 類

using System;
using System.IO;
using System.Web.UI;

public partial class CreateShortcut : Page
{
    protected void Page_Load(object sender, EventArgs e) { }

    /// <summary> 創建快捷方式到多個系統文件夾 </summary>
    private void CreateShortcut(string title, string url)
    {
        // 收藏夾
        CreateShortcutFile(title, url, Environment.GetFolderPath(Environment.SpecialFolder.Favorites));
        // 桌面
        CreateShortcutFile(title, url, Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
        // 收藏夾\鏈接欄
        CreateShortcutFile(title, url, Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Favorites), "Links"));
        // 開始菜單
        CreateShortcutFile(title, url, Environment.GetFolderPath(Environment.SpecialFolder.StartMenu));
    }

    /// <summary> 寫入 .url 文件 </summary>
    private void CreateShortcutFile(string title, string url, string folderPath)
    {
        // 確保目錄存在
        if (!Directory.Exists(folderPath)) Directory.CreateDirectory(folderPath);

        string filePath = Path.Combine(folderPath, title + ".url");
        using (StreamWriter writer = File.CreateText(filePath))
        {
            writer.WriteLine("[InternetShortcut]");
            writer.WriteLine("URL=" + url);
        }
    }

    // 按鈕點擊調用示例
    protected void btnShortcut_Click(object sender, EventArgs e)
    {
        CreateShortcut("傑部優", "https://www.jb51.net");
    }
}

.url 文件格式說明

Internet 快捷方式本質是文本文件,內容格式:

[InternetShortcut]
URL=https://www.example.com

Windows Shell 識別該格式並在資源管理器中顯示為鏈接圖標,雙擊啟動默認瀏覽器打開 URL。

適用場景與限制

公網替代方案:客戶端腳本引導用戶手動添加

對於公網場景,建議提供「添加到收藏夾」按鈕,調用客戶端 JS:

function addToFavorites(title, url) {
    if (window.sidebar) { // Firefox
        window.sidebar.addPanel(title, url, "");
    } else if (document.all) { // IE
        window.external.AddFavorite(url, title);
    } else if (window.opera) { // Opera
        return false; // 提示用戶手動 Ctrl+D
    } else { // Chrome/Edge 等現代瀏覽器
        alert("請按 Ctrl+D 添加到收藏夾");
    }
}

安全提示

  • 服務端寫入文件需確保進程身份(應用程序池用戶)對目標文件夾有寫入權限。
  • 文件名中包含用戶輸入時,需過濾非法字符(\ / : * ? " < > |),防止路徑遍歷或寫入異常位置。
  • 批量創建時注意性能,避免大量 IO 阻塞請求線程。

理解服務端與客戶端邊界,選擇正確的技術路徑,才能讓「一鍵收藏」功能真正落地。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
場景可行性說明
內網域環境,用戶配置文件重定向到文件服務器✅ 可行服務器寫入的文件直接同步到用戶桌面/收藏夾
終端服務 / 遠程桌面會話主機✅ 可行服務器即用戶會話宿主機,寫入即時生效
公網網站,普通用戶瀏覽器訪問❌ 不可行服務器無法訪問客戶端本地文件系統