UAC

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
purebas
Beiträge: 127
Registriert: 11.03.2008 23:59
Wohnort: München

UAC

Beitrag von purebas »

Bisher habe ich immer nur mit eingeschalteter UAC unter Windows7 gearbeitet. Nun stelle ich folgendes fest: Wenn ich die UAC abschalte, dann funktioniert der rechte Mausklick auf eine EXE im Zusammenhang mit "Ausführen als Administrator" nicht. Ich dachte immer, dass mit "Ausführen als Administrator" immer der entsprechende Dialog gestartet werden. Das gleiche tritt auf, wenn ich aus meinem Programm heraus mit "CreateProcessWithLogon" ein drittes Programm mit anderen Benutzerrechten starten will.

Gibt keine Möglichkeit mehr ein Programm mit anderen Benutzerrechten zu starten, wenn die W7-UAC abgeschaltet wurde? So ganz ist mir das immer noch nicht klar.

Meine zweite Frage ist, wie ich feststelle, ob UAC an oder abgeschaltet ist?
Benutzeravatar
inSANE
Beiträge: 5
Registriert: 16.11.2010 17:16

Re: UAC

Beitrag von inSANE »

purebas hat geschrieben:Gibt keine Möglichkeit mehr ein Programm mit anderen Benutzerrechten zu starten, wenn die W7-UAC abgeschaltet wurde? So ganz ist mir das immer noch nicht klar.
Wenn Du einen Shift-Rechtsklick auf eine Datei machst, sollte Dir im Kontextmenü auch bei abgeschalteter UAC noch der Menüeintrag "Als anderer Benutzer ausführen." angezeigt werden (was der GUI-Version des Kommandozeilenbefehls "RunAS" entspricht).
purebas hat geschrieben:Meine zweite Frage ist, wie ich feststelle, ob UAC an oder abgeschaltet ist?
Das sollte eigentlich so klappen:

Code: Alles auswählen

Procedure.s GetRegistryValue(topKey, sKeyName.s, sValueName.s) 
	
	; based on harkons GetRegistryValue() => http://www.purebasic.fr/english/viewtopic.php?f=13&t=43147
	
	Define GetHandle.l 
	Define hKey.l 
	Define lpData.s 
	Define lpDataDWORD.l 
	Define lpcbData.l 
	Define lType.l 
	Define lReturnCode.l 
	Define lhRemoteRegistry.l 
	Define GetValue.s 
	
	If Left(sKeyName, 1) = "\" 
		sKeyName = Right(sKeyName, Len(sKeyName) - 1) 
	EndIf 
	
	GetHandle = RegOpenKeyEx_(topKey, sKeyName, 0, #KEY_READ, @hKey) 
	
	If GetHandle = #ERROR_SUCCESS 
		lpcbData = 255 
		lpData = Space(255) 
		
		GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lType, @lpData, @lpcbData) 
		
		If GetHandle = #ERROR_SUCCESS 
			Select lType 
				Case #REG_SZ 
					
					GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lType, @lpData, @lpcbData) 
					
					If GetHandle = 0 
						GetValue = Left(lpData, lpcbData - 1) 
					EndIf 
					
				Case #REG_DWORD 
					
					GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lType, @lpDataDWORD, @lpcbData) 
					
					If GetHandle = 0 
						GetValue = Str(lpDataDWORD) 
					Else 
						GetValue = "0" 
					EndIf 
					
			EndSelect 
		EndIf
	EndIf 
	RegCloseKey_(hKey) 
	ProcedureReturn GetValue
EndProcedure

Procedure IsUacEnabled()
	ProcedureReturn Val(GetRegistryValue(#HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System","EnableLUA"))
EndProcedure

If IsUacEnabled()
	Debug "UAC ist auf diesem System aktiviert."
Else
	Debug "UAC ist auf diesem System deaktiviert."
EndIf
Benutzeravatar
purebas
Beiträge: 127
Registriert: 11.03.2008 23:59
Wohnort: München

Re: UAC

Beitrag von purebas »

Vielen Dank für die Tipps!

Das mit dem SHIFT-Rechtsklick habe ich noch nicht gewusst. Wenn ich das benutze, kann ich ein Programm tatsächlich mit dem gewünschten Erfolg unter anderen Benutzerrechten und eben auch unter Adminrechten starten. Aber warum zum Teufel funktioniert der einfache Rechtsklick "Als Administrator starten" nicht, wenn ich die UAC abgeschaltet habe? Naja, das ist wahrscheinlich MS-Geheimnis.

Wie kann ich nun diese noch vorhandene "RunAs" Funktion aus einem Programm heraus nutzen? Zur Zeit benutze ich "CreateProcessWithLogon". Aber das funktioniert nicht mehr.
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: UAC

Beitrag von Thorium »

purebas hat geschrieben: Aber warum zum Teufel funktioniert der einfache Rechtsklick "Als Administrator starten" nicht, wenn ich die UAC abgeschaltet habe?
Möglicherweise weil du mit Administratorrechten eingeloggt bist?
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
purebas
Beiträge: 127
Registriert: 11.03.2008 23:59
Wohnort: München

Re: UAC

Beitrag von purebas »

Nein

Ich bin als normaler Benutzer angemeldet und habe UAC abgeschaltet. Warum der Explorer-Kontextmenüpunkt "Als Admin starten" angezeigt wird, obwohl UAC ausgeschaltet ist, bleibt wahrscheinlich MS-Geheimnis. Vor allem da der Punkt ja auch nicht funktioniert.

Mein größeres Problem ist allerdings, dass die API "CreateProcessWithLogon" nicht mehr funktioniert, wenn UAC ausgeschaltet ist und ich als normaler Benutzer angemeldet bin.
Antworten