Wie kann man Windows 7 mitteilen, dass eine Anwendung nicht mit Administratorrechten ausgeführt werden muss?

27002
user13141

Mögliches Duplizieren:
Verhindern Sie die Erhöhung (UAC) für eine Anwendung, die diese nicht benötigt

Ich verwende eine Anwendung, die vor Windows Vista / Windows 7 geschrieben wurde. Windows hat entschieden, dass die Anwendung als Administrator ausgeführt werden muss (dh sie hat das Schildsymbol). Ich bin mir ziemlich sicher, dass die Anwendung nichts in ihrem Manifest hat, das darauf hinweist, dass sie mit erhöhten Privilegien ausgeführt werden muss (sie wurde weit vor Windows Vista geschrieben).

Gibt es eine Möglichkeit, Windows mitzuteilen, dass eine bestimmte Anwendung keine erhöhten Berechtigungen benötigt?

7

3 Antworten auf die Frage

13
bk1e

Windows aktualisiert Anwendungen automatisch anhand verschiedener Kriterien (aufgeführt in Grundlegendes zu und Konfigurieren der Benutzerkontensteuerung in Windows Vista ):

Bevor ein 32-Bit-Prozess erstellt wird, werden die folgenden Attribute geprüft, um festzustellen, ob es sich um ein Installationsprogramm handelt:

  • Dateiname enthält Schlüsselwörter wie "Installieren", "Einrichten", "Aktualisieren" usw.
  • Schlüsselwörter in den folgenden Feldern der Versionierungsressource: Hersteller, Firmenname, Produktname, Dateibeschreibung, Originaldateiname, Interner Name und Exportname.
  • Schlüsselwörter im Side-by-Side-Manifest, das in der ausführbaren Datei eingebettet ist.
  • Schlüsselwörter in bestimmten StringTable-Einträgen, die in der ausführbaren Datei verlinkt sind.
  • Schlüsselattribute in den RC-Daten, die in der ausführbaren Datei verlinkt sind.
  • Zielsequenzen von Bytes innerhalb der ausführbaren Datei.

Wenn Sie die Erhöhung nicht durch Umbenennen der Datei verhindern können, sollten Sie in der Lage sein , ein Manifest zu erstellen, das die Erhöhung verhindert .

Diese automatische Erhöhung anhand von Schlüsselwörtern ist krank! nawfal vor 10 Jahren 4
9
Ian Boyd

Unter der Annahme, wurde das Programm richtig geschrieben, und tatsächlich funktionieren, wenn sie als Standardbenutzer ausgeführt wird, können Sie es manifestieren als Standardbenutzer ausgeführt werden .

Hinweis : Wenn das Programm unter Windows XP nicht funktioniert hat, schlägt es weiterhin unter Windows Vista oder Windows 7 fehl. Sie können diese Anwendung testen, indem Sie sich bei Windows XP anmelden und prüfen, ob sie funktioniert. (Sie tun als Standardbenutzer auf Windows XP anmelden, oder?)

Wenn das Programm unter Windows XP nicht ordnungsgemäß als Standardbenutzer ausgeführt wird, wird es unter Windows 7 nicht als Standardbenutzer ausgeführt. Wenn Sie das Programm unter Windows XP als Administrator ausführen müssen, müssen Sie das Programm unter Windows 7 als Administrator ausführen.

Wenn Sie überzeugt sind, dass das Programm nicht als Administrator ausgeführt werden muss, können Sie eine Manifest- Anweisung Windows hinzufügen, die es als Standardbenutzer ausführen soll.

Erstellen Sie die Manifestdatei in demselben Ordner wie Ihre Anwendung. Goldwave.exeSie erstellen zB :

Goldwave.exe.manifest:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">  <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="IsUserAdmin" type="win32"/>  <description>Description of your application</description>  <!-- Identify the application security requirements. --> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly> 

Hinweis: Dies ist ein sogenanntes externes Manifest, da es sich in einer separaten Datei befindet. Es ist durchaus möglich, dass die Anwendung bereits hat ein Manifest.

Manifeste wurden mit Windows 2000 eingeführt, um Abhängigkeiten von bestimmten DLL-Versionen zu erklären. Dieses Manifest wurde häufig zusammen mit Windows XP verwendet, damit Programme ihre Abhängigkeit von Version 6 von comctl32.dll- erklären konnten, so dass die Anwendung "thematisch" war.

Wenn die Anwendung bereits über ein eingebettetes Manifest verfügt, ignoriert Windows alle externen Manifestationen. In diesem Fall müssen Sie Resource Hacker verwenden, um das eingebettete RT_MANIFESTManifest (Ressourcentyp 24) zu ändern .


Das nächste, was Sie tun können, ist die Registry zu überprüfen, um zu sehen, ob jemand bereits ein Erhöhungs- Shim auf Ihr Programm angewendet hat . Laden Sie Regedit und prüfen Sie:

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags \Layers 

Dort werden Sie wahrscheinlich eine große Anzahl von Programmen finden, die durch Leerzeichen getrennt sind:

  • C: \ Programme (x86) \ ACDSee32 \ ACDSee32.exe HIGHDPIAWARE
  • C: \ Programme (x86) \ Google \ Picasa3 \ Picasa3.exe ELEVATECREATEPROCESS
  • C: \ Programme (x86) \ skiStunt \ skiStunt \ bin \ skiStunt.exe WINXPSP2
  • C: \ Programme (x86) \ Steam \ Steam.exe HIGHDPIAWARE ELEVATECREATEPROCESS
  • C: \ Programme (x86) \ SysInternals \ autoruns.exe ELEVATECREATEPROCESS RUNASADMIN
  • C: \ Programme (x86) \ Windows Live \ Messenger \ msnmsgr.exe VISTASP2
  • D: \ Games \ Call of Duty \ CoDSP.exe WINXPSP3
  • D: \ Shared \ Win32app \ Spy \ SPYXX.EXE DISABLEDWM

Vergewissern Sie sich, dass Ihr Programm nicht dort ist. Eine ähnliche Gruppe von Einträgen (die für " alle Benutzer ") finden Sie auch in:

HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\AppCompatFlags\Layers 
Wie kommen die Scheiben dazu? Michael Slade vor 11 Jahren 0
@MichaelSlade Wenn Sie die Optionen auf der Registerkarte ** Kompatibilität ** eines Programms prüfen. Diese Einstellungen werden im Registrierungsschlüssel `AppCompatFlags` gespeichert Ian Boyd vor 11 Jahren 0
1
ChrisF

Wenn die Anwendung bereits vor Windows Vista / 7 geschrieben wurde, besteht eine gute Chance, dass zur Ausführung Administratorrechte erforderlich sind. Viele Programme gingen davon aus, dass die Person, die die Installation vornimmt, über Administratorrechte verfügt, und schrieb daher nur die Abschnitte der Registrierung und des Dateisystems, die der Programmierer für am besten hielt.

Das weiß ich aus eigener Erfahrung. Vor etwa zehn Jahren arbeitete ich für ein Unternehmen, das seine Software an ein großes Automobilunternehmen verkaufte. Alle ihre PCs waren gesperrt. Wir mussten unseren Code so anpassen, dass er von jemandem installiert werden konnte, der nur "Benutzerrechte" hat.