dragdrop auf elevated program

04/02/2010 - 17:26 von Ken Snyder | Report spam
hallo ng!

ich bin mir ueber die uipi und uac richtlinien im klaren aber wuerde
gerne wissen ob es eine moeglichkeit gibt trotz uac und uipi mein
program (listview) irgendwie zu konfigurieren das es trotz uac und uipi
ein drag and drop von dem windows explorer annimmt. der explorer ist
natuerlich nicht elevated. gibts da eine moeglichkeit?

lg
ken
 

Lesen sie die antworten

#1 Frank Dzaebel
04/02/2010 - 19:26 | Warnen spam
Hallo Ken,

ich bin mir ueber die uipi und uac richtlinien im klaren aber wuerde
gerne wissen ob es eine moeglichkeit gibt trotz uac und uipi mein
program (listview) irgendwie zu konfigurieren das es trotz uac und uipi
ein drag and drop von dem windows explorer annimmt. der explorer ist
natuerlich nicht elevated. gibts da eine moeglichkeit?



Normal nimmt Dein Programm das ohne weiteres an.
Nur von tiefen auf höherer priorisierte Prozesse findet
UIPI Blockierung statt - und da auch nicht immer (je nach
Message, bzw. Du kannst auch in Deiner App das
UIPI für Deine App quasi abschalten, bzw. Meldungen
eben durchlassen)).

Ich nehme mal an, dass Du das Drag&Drop auf eine
Verknüpfung Deines Programmes oder Dein Programm selber
meinst. Also als Beispiel:

private void Form1_Load(object sender, EventArgs e)
{
string[] args = Environment.GetCommandLineArgs();
foreach (string arg in args) MessageBox.Show(arg);
}

Wenn Dein Programm selber elevated ist, etwa
requireAdministrator-Security-Level im Manifest
hat, ist das natürlich by design, bzw. es stehen natürlich
auch verschiedene Level der UAC-Einstellungen je nach OS
zur Verfügung.
___________________-

Wenn Drag&Drop aufs ListView meinst,
kannst Du z.B. einfach:
AllowDrop des ListViews auf true setzen und
rudimentàr folgendes implemetieren:

private void listView1_DragDrop(object sender, DragEventArgs e)
{
string[] dateiPfade = (string[])e.Data.GetData(DataFormats.FileDrop);
StringBuilder sb = new StringBuilder();
foreach (string pfad in dateiPfade) sb.AppendLine(pfad);
MessageBox.Show("ge-dropped:" + sb.ToString());
}

private void listView1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.None;
}

oder detaillierter hiernach arbeiten:

[Drag and drop, cut/copy and paste files with Windows Explorer]
http://www.codeproject.com/KB/shell..._Drop.aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen