首页 新闻 会员 周边 捐助

c# winform 权限问题

0
悬赏园豆:20 [已解决问题] 解决于 2015-04-28 15:47

我使用管理员角色打开系统,操作注册表。但是现在我有个listview需要拖拽文件,然后就发现使用管理员角色打开系统,拖拽文件就没用了。

 1 #region listview拖拽事件
 2         private void listViewFolder_DragDrop(object sender, DragEventArgs e)
 3         {
 4             try
 5             {
 6                 String[] files = e.Data.GetData(DataFormats.FileDrop, false) as String[]; //必须用数组接收
 7                 string[] filters = ".doc|.ppt|.xlsx|.pdf|.txt".Split('|');
 8                 int result = 0;
 9                 foreach (string item in files)
10                 {
11                     foreach (string filter in filters)
12                     {
13                         if (item.Contains(filter))
14                         {
15                             BindListviewData(item);
16                             result = 1;
17                         }
18                     }
19                 }
20                 if (result == 0)
21                     MessageBoxForm.Show("系统提示", "文件格式不支持,请选择正确的格式!目前支持的文件格式有DOCX(DOC),PPTX(PPT), \r\n Excel,PDF,TXT");
22             }
23             catch (Exception e1)
24             {
25                 MessageBoxForm.Show("警告", e1.Message);
26             }
27         }
28 
29         private void listViewFolder_DragEnter(object sender, DragEventArgs e)
30         {
31             if (e.Data.GetDataPresent(DataFormats.FileDrop))
32             {
33                 e.Effect = DragDropEffects.Copy;
34             }
35             else
36             {
37                 e.Effect = DragDropEffects.None;
38             }
39         }
40 
41         private void listViewFolder_ItemDrag(object sender, ItemDragEventArgs e)
42         {
43             if (e.Button == MouseButtons.Left)
44             {
45                 if (this.listViewFolder.SelectedItems.Count <= 0)
46                 {
47                     return;
48                 }
49 
50                 //put selected files into a string array
51 
52                 string[] files = new String[this.listViewFolder.SelectedItems.Count];
53 
54                 int i = 0;
55                 foreach (ListViewItem item in this.listViewFolder.SelectedItems)
56                 {
57                     files[i++] = item.Tag.ToString();
58                 }
59 
60                 //create a dataobject holding this array as a filedrop
61 
62                 DataObject data = new DataObject(DataFormats.FileDrop, files);
63 
64                 //also add the selection as textdata
65 
66                 data.SetData(DataFormats.StringFormat, files[0]);
67 
68                 //Do DragDrop
69                 DoDragDrop(data, DragDropEffects.Copy);
70             }
71         }
72         #endregion
View Code
lee_mosquito的主页 lee_mosquito | 初学一级 | 园豆:73
提问于:2015-04-28 14:33
< >
分享
最佳答案
0

就是这么规定的,你想干啥?

收获园豆:15
Launcher | 高人七级 |园豆:45050 | 2015-04-28 15:04

我就是想在管理员打开的系统里面,使用listview拖拽

lee_mosquito | 园豆:73 (初学一级) | 2015-04-28 15:06

@lee_mosquito: 就是这么规定的,就是不让托。你只有两条路,一是提供一个打开文件的菜单,无法拖拽时使用此菜单实现功能;二是将你的程序的权限降级。

再加一个条路,你的程序应该始终以普通权限运行,对于需要管理员权限的操作使用另一个进程来实现。

Launcher | 园豆:45050 (高人七级) | 2015-04-28 15:09

@Launcher: 你的意思是,在winform里面去调用管理员的控制台程序去操作注册表吗?

lee_mosquito | 园豆:73 (初学一级) | 2015-04-28 15:15

@lee_mosquito: 是不是控制台程序不重要,看你的需求而已。

Launcher | 园豆:45050 (高人七级) | 2015-04-28 15:18

@Launcher: 一楼提到了UAC,能否从这方面解决问题呢?

lee_mosquito | 园豆:73 (初学一级) | 2015-04-28 15:25

@lee_mosquito: 你是不是到现在还不明白你这个问题同 UAC 的关系?我给你提供的思路就是教你写 UAC 兼容的程序。UAC 就是这么规定的,只能从权限高的进程向同级权限或较低权限的进程拖拽。UAC 就这么规定了,你从 UAC 这方面解决问题的办法就是让两个进程的权限符合规定。也就是说,我给你提供的解决方案就是从 UAC 这方面来考虑的

Launcher | 园豆:45050 (高人七级) | 2015-04-28 15:31

@Launcher: 谢谢啊,我明白了,那么结贴了

lee_mosquito | 园豆:73 (初学一级) | 2015-04-28 15:46
其他回答(1)
0

你的意思是,使用管理员权限,就不能拖拽?这不科学!

收获园豆:5
幻天芒 | 园豆:37207 (高人七级) | 2015-04-28 15:00

亲,这是真的,你可以去试试!

支持(0) 反对(0) lee_mosquito | 园豆:73 (初学一级) | 2015-04-28 15:06

@lee_mosquito: 好吧,我查了下资料,发现确实有禁止拖拽这个限制。

看看这篇文章是否对你有帮助:http://www.cnblogs.com/wurang/p/3793907.html

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2015-04-28 15:14

@幻天芒: 好的,谢谢

支持(0) 反对(0) lee_mosquito | 园豆:73 (初学一级) | 2015-04-28 15:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册