Ich muss meine vorherige Info leicht abändern - denn das Verhalten hat sich nicht mit Windows 8 geändert...
Das Verhalten gab es schon mit Windows Vista und auch mit Windows 7. Es dürfte also mehr Faktoren geben als nur dem Registry Key und eine aktivierte
UAC wann es sich so verhält wie du es bereits von Windows 8/8.1 kennst!
Ich würde jedenfalls davon abraten dem ganzen einem Windows 8 Check o.ä. zu verpassen.
Hmm - sehe ich nicht so. Meine Testprogramm liefert eben unter Windows Vista und 7 mit WNetEnumResource von UserA immer die Netzlaufwerke - unabhängig ob er es normal oder priviligiert ausführt. Erst ab Windows 8 verändert sich das. Einen Unterschied beim priviligierten Prozess ist ja nur die Tatsache, dass das Netzlaufwerk "noch" nicht verbunden ist - im Explorer z.B. ein rotes Kreuz hätte. Aber es läßt sich auflisten.
Aus meiner Sicht arbeitet "WNetEnumResource" nach wie vor wie es sein soll (Es listet nämlich die Netzlaufwerke genauso auf wie es z.B.: ein TFileOpenDialog machen würde)
Hmm - sehe ich auch anders, da sich bei vermeintlich gleichen Verhalten von außen unterschiedliche Ergebnisse präsentieren (Windows 7 vs. 8 bei selben User der ein Programm jeweils mit und ohne Privilegien ausführt)
Anderes Szenario - gleiches Problem...
UserA ist kein Administrator, und er macht einen rechtsklick auf dein Programm -> "Als Administrator ausführen..." -> nun gibt er die Credentials von UserB (der Administrator ist) ein -> Das Programm startet mit den Rechten von UserB -> In dem Fall wirst du die Laufwerke von UserA ebenfalls nicht sehen - es sei denn du berücksichtigst exakt dieses Szenario.
Aus meiner Sicht völlig andere Problemstellung, da hier ein Programm in einem völlig anderen User-Kontext ausgeführt wird und nicht nur in einem anderem "Rechtekontext". Das UserB die Netzlaufwerke nicht sieht von UserA ist logisch und nachvollziehbar und schon viele Windowsversionen so. Es liegt hier keine unterschiedliches Verhalten einer
API-Funktion vor wie bei meiner Ursprünglichen Fragestellung. (BTW: Userkonten sind meiner Meinung nach genau für diesen Fall da - unterschiedliche Einstellungen und Rechte - UserB muss/soll nicht sehen was UserA gemacht/eingestellt hat)
Unabhängig von dem Problem, wirst du noch in ganz andere Probleme mit
UAC laufen wenn du nicht im vorhinein
UAC-Aware programmierst.
Das wird zwar Offtopic, aber mich würde schon interessieren was du da so an Links im Angebot hättest zum nachlesen. Ich habe nämlichn ie wirklich darauf geachtet :-/ - also bewusst. Bisher bin ich auf keine Probleme gestoßen mit aktivierter
UAC. Vielleicht mache ich aber auch zu wenig systemnahe Dinge in meinem Programmen.
Gruß, Chris