如何删除"开始->程序"中的程序的快捷方式和桌面上的快捷方式

解决方案 »

  1.   

    好象这些图标都存在系统盘下的
    系统盘符:\Documents and Settings\用户名的Start Menu,Desktop目录里.
    用程序不难吧.
    可能没理解高人的意图.
      

  2.   

    程序的快捷方式在
    C:\Documents and Settings\All Users\「开始」菜单\程序
    C:\Documents and Settings\<用户名>\「开始」菜单\程序桌面上的快捷方式在
    C:\Documents and Settings\All Users\桌面\ 
    C:\Documents and Settings\<用户名>\桌面\ 不过是删文件的操作而已
      

  3.   

    程序的快捷方式在
    C:\Documents and Settings\All Users\「开始」菜单\程序
    C:\Documents and Settings\<用户名>\「开始」菜单\程序桌面上的快捷方式在
    C:\Documents and Settings\All Users\桌面\ 
    C:\Documents and Settings\<用户名>\桌面\ 不过是删文件的操作而已
      

  4.   

    直接删除文件即可.
    如果想删除桌面上的一个名为qq的快捷方式,
    只要这样:
    DeleteFile("C:\Documents and Settings\<用户名>\桌面\aa.lnk");快捷方式的后缀名为lnk,
    删除一个快捷方式只要用看到的名字加个.lnk即可
      

  5.   

    LPITEMIDLIST pidlBeginAt ;
    char szShortcut[ MAX_PATH]="",
    szPath[ MAX_PATH]="";

    // 取得开始菜单或桌面的PIDL
    SHGetSpecialFolderLocation( HWND_DESKTOP, 
    nBeginAt, &pidlBeginAt) ;
    // 把PIDL转化成路径名
    SHGetPathFromIDList( pidlBeginAt, szPath) ;
    // 取得要删除的快捷方式
    if( !GetShortcutDel( szPath, szShortcut))
    return ;
    // 删除快捷方式
    if( !DeleteLink(szShortcut))
    return ;
    // 通知SHELL有关改变
    NotifyShell( SHCNE_DELETE|SHCNE_INTERRUPT, 
    szShortcut) ;
      

  6.   

    void NotifyShell(LONG wEventId, LPSTR szPath)
    {
    SHChangeNotify( wEventId,
    SHCNF_FLUSH | SHCNF_PATH,
    szPath,0);
    //取得szPath的父目录
    char* p;
    for( p=szPath+lstrlen(szPath)-1;
    *p != '\\'; 
    p--);
    *p='\0';
    SHChangeNotify(SHCNE_UPDATEDIR
    |SHCNE_INTERRUPT, 
    SHCNF_FLUSH | SHCNF_PATH,szPath,0);
    }
      

  7.   

    BOOL DeleteLink(LPSTR lpszShortcut)
    {
    SHFILEOPSTRUCT fos ;

    ZeroMemory( &fos, sizeof(fos)) ;
    fos.hwnd = HWND_DESKTOP ;
    fos.wFunc = FO_DELETE ;
    fos.pFrom = lpszShortcut;
    fos.pTo = NULL ;
    fos.fFlags = FOF_SILENT | FOF_ALLOWUNDO ;

    if( 0 != SHFileOperation( &fos))
    return FALSE ;
    return TRUE ;}
      

  8.   

    BOOL GetShortcutDel(LPSTR lpszInitDir, LPSTR lpszShortcut)
    {
    OPENFILENAME ofn ;
    char szFilter[] = "Shortcuts\0*.lnk\0" ;

    ZeroMemory(&ofn,sizeof( OPENFILENAME));
    ofn.lStructSize = sizeof( OPENFILENAME) ;
    ofn.hwndOwner = HWND_DESKTOP ;
    ofn.lpstrFilter = szFilter ;
    ofn.nFilterIndex = 0 ;
    ofn.nMaxFile = MAX_PATH ;
    ofn.lpstrTitle = "请选择要删除的快捷方式" ;
    ofn.lpstrFile = lpszShortcut;
    ofn.lpstrInitialDir = lpszInitDir ;
    ofn.Flags = OFN_FILEMUSTEXIST | 
    OFN_PATHMUSTEXIST | OFN_EXPLORER |
    OFN_NODEREFERENCELINKS ;
    if(! GetOpenFileName( &ofn))
    return FALSE ;
    return TRUE ;
    }
      

  9.   

    //设置起始文件夹为桌面
    int nBeginAt=CSIDL_DESKTOPDIRECTORY ; 
    //设置起始文件夹为"开始"菜单
    int nBeginAt=CSIDL_STARTMENU;
      

  10.   

    不要对猩猩盲目崇拜哦,我只是对底层的编程比较了解,最近想自己作一个INSTALLBUILDER,安装已经做好了,正在作卸载,谢谢毛病大哥了,我明天具体测试一下你的程序。。呵呵
      

  11.   

    对了,其实我一开始是问这个问题的,我觉得这个问题的卸载方式更好一些,比我这样到处找到我安装的东西然后删掉好,毛病大哥是不是知道呢
    http://expert.csdn.net/Expert/topic/2969/2969231.xml?temp=.8773462
      

  12.   

    快捷方式也是一种文件,扩展名.lnk !直接删除这个文件就可以了!用DeleteFile
      

  13.   

    在系统盘里的Documents and Settings里找到它们想应的文件夹,把对应的文件删掉就行了
      

  14.   

    程序的快捷方式在
    C:\Documents and Settings\All Users\「开始」菜单\程序
    C:\Documents and Settings\<用户名>\「开始」菜单\程序桌面上的快捷方式在
    C:\Documents and Settings\All Users\桌面\ 
    C:\Documents and Settings\<用户名>\桌面\ 开始菜单和桌面上的内容都是在这里的一个链接文件,删了就行了
      

  15.   

    程序的快捷方式在
    C:\Documents and Settings\All Users\「开始」菜单\程序桌面上的快捷方式在
    C:\Documents and Settings\All Users\桌面\ 
      

  16.   

    看msdn:
    SHGetSpecialFolderLocation / SHGetSpecialFolderPath如"C:\Documents and Settings\All Users\「开始」菜单\程序"之类依赖于操作系统,不好
      

  17.   

    是啊,我也是觉得"C:\Documents and Settings\All Users\「开始」菜单\程序"太依赖操作系统了