Murphy9904 schrieb:
Du hast ja witzige Hobbys. Anderen Leuten ihre Lösungsansätze nieder machen ohne selbst davon Ahnung zu haben.
Wieso nieder machen? Es stimmt nun mal nicht und damit sowas nicht durchs Internet geistert, sollte man das auch gleich klar stellen. Sonst kommt man bei sowas wie "msconfig Tuning" heraus, wo "Windows ja nicht alle CPU-Kerne zum Booten nutzt". Außerdem gibt es keinen Lösungsansatz, welcher dieser Theorie entspricht ("benenn die Datei mal um, evtl. hast du Glück und Windows schätzt falsch").
Fakt ist, dass Windows überhaupt nichts "schätzt", weder am Dateinamen noch an sonst irgendwas. Am Dateinamen erkennt man rein gar nichts und eineheuristische Suche gibt es ebenso nicht, sonst würde Windows beim Auflisten tausender Dateien "Jahre" benötigen. Die benötigten Rechte stehen in der Manifest-Datei, die beim Kompilieren mit in die exe-Datei gepackt wird (keine Ahnung ob eine externe Manifest auch die benötigten Rechte ändern kann). Wie sollte Windows auch sonst wissen, dass der Trojaner 098f6bcd4621d373cade4e832627b4f6.exe (kein update, setup, install o.ä. im Namen) im Ordner %appdata% (User hat volle Rechte in diesem Ordner) Admin-Rechte benötigt (und somit das UAC-Symbol erscheint)?
Um die Theorie mal zu entkräften:
x-beliebige ausführbare Datei -> Eigenschaften -> Kompatibilität -> Programm als Admin ausführen: du siehst das UAC-Symbol
eben diese Datei in irgendwas umbenennen: das UAC-Symbol ist weg
Datei wieder in ihren alten Namen umbenennen: das UAC-Symbol ist wieder da
kopier eine x-beliebige Datei, die keine Admin-Rechte brauch, an den Ort mit dem Namen, an welcher obige Datei steht: UAC-Symbol ist da und das trotz dass für die Anwendung keine Admin-Rechte von Nöten sind (sonst hätte es wohl schon das UAC-Symbol)
Der Grund:
Die Kompatibilitätsparameter werden in der Registry für jede einzelne Datei hinterlegt. Der Schlüssel dafür lautet
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers, wobei die Daten im Format "Dateiname" = "Kompatibilitätsoptionen" abgespeichert werden. Und für die von mir gerade eben gesetzten Parameter gibt es in dem Schlüssel einen Eintrag "D:\Entwicklung\C#\Visual Studio\EnvEd\EnvEd\bin\Debug\EnvEd.exe" = "~ RUNASADMIN". Lösch ich diesen Key und aktualisiere den Explorer, ist das UAC-Symbol genauso weg.
Es wird rein gar nichts geschätzt.
Eine Suche nach "windows admin rechte schätzen" ergab keine Treffer, die im Kontext dazu stehen.
edit:
easy.2ci schrieb:
Wenn du aber keine .Net Anwendung hast gibt es kein Manifest. Und dann greift der Fallback auf andere Kriterien.
Manifests können in jede beliebige Anwendung gelinkt werden. Der Entwickler muss diese nur dazu linken und schon hat sich das gegessen.
http://msdn.microsoft.com/en-us/library/windows/desktop/dd371711(v=vs.85).aspx -> Nichts von ".NET exlusive" o.ä. zu lesen.