文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>调用dll给winform程序创建所有用户均可使用的快捷方式

调用dll给winform程序创建所有用户均可使用的快捷方式

时间:2010-11-03  来源:悟空空

以便用户使用.由于公司内部机器的多样性,有台式机有笔记本,并且公司有域控,台式机大部分

加入到域中,但并不是所有台式机均加入到域.因此每台电脑的环境就有很大差距,权限也有很

大的不同.所以安装当前软件就需要为每台机器的所有用户创建快捷方式.

一般情况下为用户创建应用程序快捷方式使用的方式为

System.Environment.GetFolderPath(System.Environment.SpecialFolder.DesktopDirectory)

此种方式返回当前用户的桌面路径.经过几番查找并未发现.net平台提供获取本机All User用户桌面路径

的方法.因此没有办法只能借助与一些windows自带的dll来进行操作.

在此我使用的是shfolder.dll   此dll在百度百科中的解释是"shfolder.dll是Windows特殊文件夹相关服

务模块,例如我的文档。属于: Microsoft Windows "

代码如下:

 

        #region 说明
        //CSIDL_COMMON_DESKTOPDIRECTORY、CSIDL_COMMON_STARTMENU、CSIDL_COMMON_STARTUP
        //CSIDL_DESKTOPDIRECTORY、CSIDL_STARTMENU、CSIDL_STARTUP
        //上面分别为公共用户和当前用户的桌面、开始菜单、启动菜单的目录
        //SHGetFolderPath方法根据参数"nFolder"不同值获取机器相应文件夹路径,值返回到参数"lpszPath"
        #endregion        

        [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;
        private const int CSIDL_COMMON_STARTMENU = 0x0017;

        

        /// <summary>
        /// 获取本机All User桌面路径(C:\Documents and Settings\All Users\桌面)
        /// </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>
        /// 获取本机All User开始程序路径(C:\Documents and Settings\All Users\「开始」菜单\程序)
        /// </summary>
        /// <returns></returns>
        public static string GetAllUsersStartMenuPath()
        {
            StringBuilder sbPath = new StringBuilder(MAX_PATH);
            SHGetFolderPath(IntPtr.Zero, CSIDL_COMMON_STARTMENU, IntPtr.Zero, 0, sbPath);
            return sbPath.ToString();
        }


使用时直接调用相应方法GetAllUsersDesktopFolderPath()或 GetAllUsersStartMenuPath()

即可获得路径.

 

 

 

相关阅读 更多 +
排行榜 更多 +
方块枪战战场安卓版

方块枪战战场安卓版

飞行射击 下载
战斗火力射击安卓版

战斗火力射击安卓版

飞行射击 下载
空中防御战安卓版

空中防御战安卓版

飞行射击 下载