我的问题是要从所有用户的桌面删除快捷方式。
我已将Dektop文件夹从C:\Users\\[User]\Desktop
更新为G:\Users\\[User]\Desktop
,因为我在台式机上有一些重要数据,并且如果我重新安装Windows或Windows,我不想丢失任何用户数据Windows(任何方式)被损坏。我还更新了文档并下载了文件夹,以将数据保存到'%SystemDrive%`以外的驱动器中。
我这样做是 -打开WindowsExplorer
->右键单击“桌面”(在左侧面板中,在“快速访问”列表下)
->属性
->位置
->在文本框中写入新的桌面文件夹位置
->应用
->确定。
一切正常,但是当我想从所有用户的桌面删除快捷方式时,我只能从C驱动器获取用户文件夹。
我删除快捷方式的代码如下
foreach (var userFolder in userFolders) //userFolders contains all sub directories of user directory
{
var shortcutFullName = userFolder + "\\Desktop\\" + shortcutName;
if (File.Exists(shortcutFullName))
{
File.Delete(shortcutFullName);
}
}
我已经尝试过How do you get the Default Users folder 和
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
答案 0 :(得分:0)
您应该能够使用Win32 API获得Desktop文件夹。
[DllImport("shell32.dll")]
static extern bool SHGetSpecialFolderPath(IntPtr hwndOwner, [Out] StringBuilder lpszPath, int nFolder, bool fCreate);
const int CSIDL_COMMON_DESKTOPDIRECTORY = 0x19;
const int CSIDL_DESKTOP = 0x0;
public static void GetCommonProfilePath()
{
StringBuilder allUserProfile = new StringBuilder(260);
SHGetSpecialFolderPath(IntPtr.Zero, allUserProfile, CSIDL_COMMON_DESKTOPDIRECTORY, false);
string commonDesktopPath = allUserProfile.ToString();
//The above API call returns: C:\Users\Public\Desktop
Console.WriteLine(commonDesktopPath);
SHGetSpecialFolderPath(IntPtr.Zero, allUserProfile, CSIDL_DESKTOP = 0, false);
// This should give you user specific path.
Console.WriteLine(allUserProfile.ToString());
}
有关更多详细信息,请参见this blog。