Hallo in die Runde,
ich habe ein Problem, welches mir seit Stunden die Zeit raubt...
Gegeben ist folgende static Klasse
1 | using System;
|
2 | using System.Collections.Generic;
|
3 | using System.Linq;
|
4 | using System.Text;
|
5 | using System.DirectoryServices;
|
6 |
|
7 | public static class ADQuery
|
8 | {
|
9 |
|
10 | public static string GetHomeFolder()
|
11 | {
|
12 | string[] PropertiesToLoad = new string[1];
|
13 | PropertiesToLoad[0] = "homeDirectory"; //homeDirectory beinhaltet den Pfad des P-Laufwerkes
|
14 | string filter = "(&(objectCategory=user)(objectClass=user)(cn=" + Environment.UserName + "))";
|
15 |
|
16 | try
|
17 | {
|
18 | SearchResultCollection results = p_NewQuery(filter, PropertiesToLoad);
|
19 |
|
20 | if (results != null)
|
21 | {
|
22 | foreach (SearchResult result in results)
|
23 | {
|
24 | DirectoryEntry directoryObject = result.GetDirectoryEntry();
|
25 | return directoryObject.Properties["homeDirectory"].Value.ToString();
|
26 | }
|
27 | }
|
28 | }
|
29 | catch { }
|
30 |
|
31 | return null;
|
32 | }
|
33 |
|
34 |
|
35 | private static System.DirectoryServices.SearchResultCollection p_NewQuery(string filter, string[] ptoLoad)
|
36 | {
|
37 | //Directorysearcher basteln
|
38 | DirectoryEntry Dentry = new DirectoryEntry("LDAP://xxxxx.DE");
|
39 |
|
40 | DirectorySearcher dSearcher = new DirectorySearcher(Dentry);
|
41 | dSearcher.Filter = filter;
|
42 |
|
43 | foreach(string property in ptoLoad) //Eigenschaften, welche ausgelesen werden sollen laden.
|
44 | {
|
45 | dSearcher.PropertiesToLoad.Add(property);
|
46 | }
|
47 |
|
48 |
|
49 | return dSearcher.FindAll();
|
50 | }
|
51 |
|
52 | }
|
Und folgender Aufruf (funktioniert nicht)
Nach Klick auf Winform Button
1 | void Button1Click(object sender, EventArgs e)
|
2 | {
|
3 | char[] driveletter = new char[1];
|
4 | driveletter[0] = 'P';
|
5 |
|
6 | try
|
7 | {
|
8 | NetworkDrive.MapFolder(ADQuery.GetHomeFolder(), driveletter);
|
9 | }
|
10 | catch(Exception err)
|
11 | {
|
12 | MessageBox.Show(err.Message.ToString() + " Homefolder-> " + ADQuery.GetHomeFolder());
|
13 | }
|
14 | }
|
Hier wird mir die Exception ungültiges Verzeichnis geworfen und
ADQuery.GethomeFolder() gibt nur einen leeren String zurück.
Rufe ich ADQuery.GethomeFolder() hier auf erhalte ich allerdings den
Pfad des Homefolders...:
1 | public MainForm()
|
2 | {
|
3 | InitializeComponent();
|
4 | }
|
Was läuft schief, welchen Kontextwechsel verstehe ich nicht?