我想以編程方式創建目錄的快捷方式。我發現了很多例子,但沒有一個看起來可以工作。C#編程式創建目錄的快捷方式並不總是工作
我觀察所產生的快捷方式的屬性三種不同的結果:
文件的快捷方式,鍵入指定爲「快捷方式(.lnk)」,它使得打開方式對話框彈出詢問我附加一個擴展名。
快捷方式文件屬性被分配爲「文件」,當雙擊時它完全沒有。
最後這當然是我最喜歡的...快捷方式文件屬性分配爲:「文件夾」,它應該像它的工作。
這是我目前使用的代碼...我已經嘗試了一些這種變化。
bool IsExists = false;
string icon = appPath + "Welcome.ico";
// Their is a difference to local and ClickOnce App locations... this compensates for it
IsExists = System.IO.File.Exists(icon);
if (!IsExists)
{
icon = appPath + @"bin\Debug\Welcome.ico";
}
var desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
var target = (Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\Artronix\Welcome To FreightWare Online\").Replace(@"\","/");
IWshShortcut shortcut;
var wshShell = new WshShellClass();
shortcut = (IWshShortcut)wshShell.CreateShortcut(Path.Combine(desktop, @"FreightWare Resources.lnk"));
shortcut.IconLocation = icon;
shortcut.TargetPath = Path.GetFullPath(target);
shortcut.Save();
我懷疑appPath是這個信息的罪魁禍首。使用你的代碼的第二部分(並使用我自己的設置.ico文件),我總是得到第三個結果。當目標路徑不存在時,我只實現了第一個結果。如果你可以縮小在什麼條件下的結果不同,這可能有幫助 – panhandel
這裏是appPath:private string appPath = System.AppDomain.CurrentDomain.BaseDirectory;不同之處在於,如果我通過InstallShield或VS在本地安裝此應用程序,它會將該圖標文件安裝在與appPath相同的目錄中......但是,當我由於某種原因運行ClickOnce Web安裝時,它會添加另一個bin和Debug文件夾在appPath目錄中...因此,if語句如果在appPath中找不到,則查看擴展目錄內部。另請注意,該圖標始終顯示在快捷方式內,因此我知道它正在找到正確的路徑。 –
我非常想試一試,只是因爲你要求upvotes。我非常確定在某個地方有一個規則,除了它是一個明顯的互聯網假人。 – Mels