C# 代码 创建桌面快捷方式,win10系统下出错,win7正常 100
未能加载文件或程序集“Interop.IWshRuntimeLibrary,Version=1.0.0.0,Culture=neutral,PublicKeyToken=...
未能加载文件或程序集“Interop.IWshRuntimeLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依 赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集。
<code>
[DllImport("shfolder.dll", CharSet = CharSet.Auto)]
private static extern int SHGetFolderPath(IntPtr hwndOwner, int nFolder, IntPtr hToken, int dwFlags, StringBuilder lpszPath);
private const int MAX_PATH = 260;
private const int CSIDL_COMMON_DESKTOPDIRECTORY = 0x0019;
/// <summary>
/// 获取公共桌面路径
/// </summary>
/// <returns>返回桌面完整路径</returns>
public static string GetAllUsersDesktopFolderPath()
{
StringBuilder sbPath = new StringBuilder(MAX_PATH);
SHGetFolderPath(IntPtr.Zero, CSIDL_COMMON_DESKTOPDIRECTORY, IntPtr.Zero, 0, sbPath);
return sbPath.ToString();
}
/// <summary>
/// 创建桌面快捷方式,如已存在先删除再创建
/// </summary>
/// <param name="iconPath">icon图标路径</param>
/// <param name="ClientExeFullPath">程序启动路径,带*.exe</param>
/// <param name="lnkName">快捷方式名称</param>
public static void CreateDesktopLnkMethod(string iconPath, string ClientExeFullPath, string lnkName)
{
if (System.IO.File.Exists(iconPath))
{
WshShell shelllnk = new WshShell();
IWshShortcut shortcut = null;
try
{
//生成新的快捷方式
shortcut = (IWshShortcut)shelllnk.CreateShortcut(GetAllUsersDesktopFolderPath() + "\\" + lnkName + ".lnk");
shortcut.TargetPath = ClientExeFullPath;
shortcut.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory;
shortcut.WindowStyle = 1;
shortcut.Description = lnkName;
shortcut.IconLocation = iconPath;
shortcut.Save();
}
catch (Exception err)
{
Console.WriteLine(err.Message);
}
}
}
</code> 展开
<code>
[DllImport("shfolder.dll", CharSet = CharSet.Auto)]
private static extern int SHGetFolderPath(IntPtr hwndOwner, int nFolder, IntPtr hToken, int dwFlags, StringBuilder lpszPath);
private const int MAX_PATH = 260;
private const int CSIDL_COMMON_DESKTOPDIRECTORY = 0x0019;
/// <summary>
/// 获取公共桌面路径
/// </summary>
/// <returns>返回桌面完整路径</returns>
public static string GetAllUsersDesktopFolderPath()
{
StringBuilder sbPath = new StringBuilder(MAX_PATH);
SHGetFolderPath(IntPtr.Zero, CSIDL_COMMON_DESKTOPDIRECTORY, IntPtr.Zero, 0, sbPath);
return sbPath.ToString();
}
/// <summary>
/// 创建桌面快捷方式,如已存在先删除再创建
/// </summary>
/// <param name="iconPath">icon图标路径</param>
/// <param name="ClientExeFullPath">程序启动路径,带*.exe</param>
/// <param name="lnkName">快捷方式名称</param>
public static void CreateDesktopLnkMethod(string iconPath, string ClientExeFullPath, string lnkName)
{
if (System.IO.File.Exists(iconPath))
{
WshShell shelllnk = new WshShell();
IWshShortcut shortcut = null;
try
{
//生成新的快捷方式
shortcut = (IWshShortcut)shelllnk.CreateShortcut(GetAllUsersDesktopFolderPath() + "\\" + lnkName + ".lnk");
shortcut.TargetPath = ClientExeFullPath;
shortcut.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory;
shortcut.WindowStyle = 1;
shortcut.Description = lnkName;
shortcut.IconLocation = iconPath;
shortcut.Save();
}
catch (Exception err)
{
Console.WriteLine(err.Message);
}
}
}
</code> 展开
展开全部
不能在桌面创建快捷方式,并提示“请检查磁盘是否已满“,如下图:
一、产生的原因:
此问题,初看提示很容易陷入一个误区,真以为是磁盘满了,再回到资源管理器查看,系统分区明明还有几十G的空闲,其实,它并不是磁盘已满的问题。
再说,一个快捷方式,也就在800个字节左右,如果系统分区的空间连800个字节都容纳不下的话,那么系统早就卡死了。
其实,不能在桌面创建快捷方式,这是一个权限问题。至于为什么出现这样的提示,就不得而知了。
二、解决方法:
1、打开资源管理器--打开系统分区,如下图:
2、右键用户--属性,如下图:
3、点击安全--编辑,如下图:
4、把管理器或者其它用户的权限全部勾选,如下图:
一、产生的原因:
此问题,初看提示很容易陷入一个误区,真以为是磁盘满了,再回到资源管理器查看,系统分区明明还有几十G的空闲,其实,它并不是磁盘已满的问题。
再说,一个快捷方式,也就在800个字节左右,如果系统分区的空间连800个字节都容纳不下的话,那么系统早就卡死了。
其实,不能在桌面创建快捷方式,这是一个权限问题。至于为什么出现这样的提示,就不得而知了。
二、解决方法:
1、打开资源管理器--打开系统分区,如下图:
2、右键用户--属性,如下图:
3、点击安全--编辑,如下图:
4、把管理器或者其它用户的权限全部勾选,如下图:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询