前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Win7系统应用程序不能拖放文件原来又是UAC是惹的祸

Win7系统应用程序不能拖放文件原来又是UAC是惹的祸

作者头像
跟着阿笨一起玩NET
发布2018-09-18 15:25:43
1.3K0
发布2018-09-18 15:25:43
举报
一定要先开启文本框的拖放属性this.txtPath.AllowDrop = true;
本来就是一个很简单的问题,妈的,浪费我一个多小时。愿意就是罪魁祸首就是win7的UAC权限导致的。又是一个蛋疼的问题!
 private void txtPath_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
                e.Effect = DragDropEffects.All;
            else
                e.Effect = DragDropEffects.None;
        }
        private void txtPath_DragDrop(object sender, DragEventArgs e)
        {
            string[] s = (string[])e.Data.GetData(DataFormats.FileDrop, false);
            if (s.Length > 0)
            {
                //指定html文件类型。
                if (System.IO.Path.GetExtension(s[0]).ToLower() == ".html")
                {
                    txtPath.Text = s[0];
                }
                else
                {
                    XtraMessageBox.Show("只支持拖放html格式的文件", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }
我的Visual Studio2012 是以管理员身份运行,导致Debug的时候应用程序也是以管理员身份运行的,然后Win7系统在UAC的保护下,控件的DragEnter/DragOver/DragDrop等事件统统都不被触发。
 

从VISTA->WINDOWS7 UAC(用户帐户控制)出现到至今,拖放文件一直存在一个问题:
“以管理员身份运行”的任何程序,均不能正常接受拖放进窗口中的文件!

当我们的WinForm应用程序需要以管理员的身份运行时(比如,为了访问windows注册表),我们需要在程序清单(app.manifest文件)中将UAC选项改为"requireAdministrator"(可以参考如何自动以管理员身份运行.NET程序?)。如此生成的exe的图标在XP和Win2003下是没有变化的,但是放到win7下面,你会发现图标的右下角多了一个小盾牌。
 
如何解决Win7下这个拖拽的问题了?
解决办法:一、应用程序不以管理员身份运行。或者visual studio也不要以管理员身份运行。
解决办法二:超级无耻方法:UAC设置为0级就无问题了

UAC设置为0级就无问题了
如果有更好的方法,请留言!
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012-06-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档