Programı Yönetici Ayrıcalıkları Olmadan Çalıştırma ve UAC İstemini Atlama
Bazı programlar başlatıldığında izin yükseltmesi (uygulama simgesinin yanındaki kalkan) gerektirir, ancak aslında normal çalışmaları için yönetici ayrıcalıklarına ihtiyaçları yoktur. Örneğin, ProgramFiles içindeki uygulama klasöründe ve/veya program tarafından kullanılan kayıt defteri anahtarlarında kullanıcılarınız için izinleri manuel olarak verebilirsiniz. Bilgisayarda Kullanıcı Hesabı Denetimi etkinleştirilmişse, bir UAC istemi görüntülenir ve böyle bir programı standart kullanıcı olarak çalıştırmayı denerseniz, Windows kullanıcıdan yönetici parolasını girmesini ister.
Bu mekanizmayı atlamak için birçok yönetici UAC'yi devre dışı bırakır veya "Yöneticiler" yerel grubuna bir kullanıcı hesabı ekleyerek yönetici hakları verir. Tabii ki, her iki yöntem de güvenli değildir. Windows güvenliğini azalttıkları için bu yöntemlerin hiçbiri yaygın kullanım için önerilmez. Bu yazımızda, yönetici izinleri gerektiren bir programın standart kullanıcı olarak nasıl çalıştırılacağına ve UAC yükseltme isteminin nasıl bastırılacağına bakacağız.
Yönetici Olmayan Kullanıcıların Program Çalıştırma İzinlerini Yapılandırma
Bir Windows programı aşağıdaki durumlarda başladığında sizden yönetici izinleri isteyebilir:
Programın, NTFS izinlerinin ayrıcalıklı olmayan kullanıcılara verilmediği bir sistem dizinine veya dosyaya erişmesi gerekir;
Program, başlangıçta yükseltme gerektiren özel bir bayrakla derlendiyse (
requireAdministrator).
İlk durumda, sorunu çözmek için gereken tek şey, program dizinine veya gerekli sistem dizinine/dosyasına RW veya Tam Kontrol kullanıcı izinlerini vermektir. Örneğin, bir program dosyalarını (günlükler, yapılandırma dosyaları vb.) kendi klasöründe saklar.
C:\Program Files (x86)\SomeAppveya bazı sistem dizini. Programın düzgün çalışması için kullanıcının bu dosyalara yazma izni olması gerekir. Bu programın normal çalışması için yönetici izinleri gereklidir.
Programın yönetici olmayan bir kullanıcı olarak çalışmasına izin vermek için, kullanıcıya (veya yerleşik Kullanıcılar grubuna) NTFS dosya sistemi düzeyinde bir dosyayı/dizini değiştirme/yazma iznini manuel olarak vermek yeterlidir.
Programın eriştiği dosyaların, klasörlerin ve kayıt defteri anahtarlarının listesini bulmak için İşlem İzleyici'yi kullanın (https://learn.microsoft.com/en-us/sysinternals/downloads/procmon) . Program işleminin adına göre filtreyi etkinleştirin ve tüm kaynakları bulun, bunlara erişmeye çalışırsanız, Erişim Reddedildi mesajı görüntülenir. Klasörlere/dosyalara/kayıt defteri anahtarlarına gerekli izinleri verin.
Not. Aslında, değişen uygulama verilerinin C:\Program Files dizininde saklanması önerilmez. Uygulama verilerini kullanıcı profilinde saklamak daha iyidir. Ancak bu, uygulama geliştiricilerin tembelliği ve beceriksizliği meselesidir.
Standart Kullanıcıların Yönetici Ayrıcalıkları Gerektiren Bir Programı Çalıştırmasına İzin Verme
Daha önce, RunAsInvoker parametresini kullanarak belirli bir program için UAC isteminin nasıl devre dışı bırakılacağını açıklamıştık. Ancak bu yöntem yeterince esnek değildir.
Herhangi bir programı yönetici ayrıcalıkları olmadan (yönetici şifresini girmeden) ve UAC etkinken (UAC kaydırıcısının 4., 3. veya 2. Seviyesi) çalıştırmaya zorlamanın daha basit bir yoluna bakalım.
Örnek olarak Kayıt Defteri Düzenleyicisini ele alalım - regedit.exe (C:\Windows\ klasöründe bulunur). Uygulama simgesinin yanındaki UAC kalkanına dikkat edin. Bu simge, bu uygulamayı çalıştırmak için UAC yükseltmesinin gerekli olduğu anlamına gelir.
koştuğunda
regedit.exe, yönetici kimlik bilgilerini isteyen bir Kullanıcı Hesabı Denetimi istemi göreceksiniz (
Do you want to allow this app to make changes to your device?). Bir parola sağlamazsanız ve yükseltmeyi onaylamazsanız uygulama başlamaz.
Bu program için UAC isteğini atlamayı deneyelim. Masaüstünüzde aşağıdaki kodu içeren run-as-non-admin.bat metin dosyasını oluşturun:
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"Regedit.exe'yi yönetici ayrıcalıkları olmadan çalışmaya zorlamak ve UAC istemini bastırmak için, çalıştırmak istediğiniz EXE dosyasını masaüstündeki bu BAT dosyasına sürüklemeniz yeterlidir.
Kayıt Defteri Düzenleyicisi, UAC istemi olmadan ve bir yönetici parolası girmeden başlamalıdır. Görev Yöneticisi'ni açıp Yükseltilmiş sütununu eklerseniz, yükseltilmiş durum olmadan (yönetici olmayan kullanıcı izinleriyle çalıştır) regedit.exe işleminin olduğunu göreceksiniz.
HKEY_LOCAL_MACHINE kayıt kovanı altındaki herhangi bir öğeyi düzenlemeye çalışın. Gördüğünüz gibi, bir kullanıcı bu kayıt defteri anahtarındaki öğeyi düzenleyemez (kullanıcının sistem kayıt defteri anahtarları için yazma izni yoktur). Ancak, kullanıcı kovanınızda (HKEY_CURRENT_USER) kayıt defteri anahtarlarını ve parametreleri ekleyebilir veya düzenleyebilirsiniz.
Aynı şekilde, BAT dosyasını kullanarak herhangi bir uygulamayı çalıştırabilirsiniz. Yürütülebilir dosyanın yolunu belirtmeniz yeterlidir.
run-app-as-non-admin.bat
Set ApplicationPath="C:\Program Files\SomeApp\testapp.exe"
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %ApplicationPath%"Ayrıca, tüm uygulamaları yükseltmeden çalıştırmaya izin veren bir bağlam menüsü de ekleyebilirsiniz. Bunu yapmak için RunAsUser.REG dosyasını oluşturun, aşağıdaki kodu içine kopyalayın, kaydedin ve reg dosyasına çift tıklayarak Windows kayıt defterine aktarın (uygulamak için yönetici izinlerine ihtiyacınız olacak) bu değişiklik).
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker]
@="Run as user without UAC privilege elevation"
[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker\command]
@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""Bundan sonra, herhangi bir uygulamayı yönetici ayrıcalıkları olmadan çalıştırmak için, Windows Dosya Gezgini bağlam menüsünden "UAC ayrıcalık yükseltmesi olmadan kullanıcı olarak çalıştır"ı seçmeniz yeterlidir.
GPO kullanarak kayıt defteri parametrelerini içe aktararak bu menü öğesini etki alanındaki tüm bilgisayarlara dağıtabilirsiniz.
kullanıldığını hatırlatmak isterim.
RUNASINVOKERprogram için mod, izinleri yükseltmenize izin vermez. RunAsInvoker, UAC istemini bastırır ve programa mevcut kullanıcının ayrıcalıklarıyla çalışması gerektiğini ve ayrıcalıkların yükseltilmesini istememesini söyler. Bir programın sistem ayarlarını veya dosyalarını düzenlemek için gerçekten yükseltilmiş ayrıcalıklara ihtiyacı varsa, çalışmaz veya yeniden yönetici izinleri ister.
CMD'de RunAsInvoker Seçeneği ile UAC Nasıl Atlanır?
__COMPAT_LAYER ortam değişkeni, uygulamalar için farklı uyumluluk seviyeleri belirlemenizi sağlar (EXE dosyasının özelliklerinde Uyumluluk sekmesi). Bu değişken, programı çalıştırmak istediğiniz uyumluluk ayarlarını belirlemenizi sağlar. Örneğin, Windows 8 uyumluluk modunda 640×480 çözünürlükte bir uygulama başlatmak için aşağıdakileri ayarlayın:
set __COMPAT_LAYER=Win8RTM 640x480__COMPAT_LAYER değişkeni, ilgilendiğimiz bazı seçeneklere sahiptir. Aşağıdaki parametreler vardır:
RunAsInvoker - UAC istemi olmadan bir üst işlemin ayrıcalıklarına sahip bir uygulama çalıştırın;
RunAsHighest - kullanıcı için mevcut olan en yüksek düzeyde izne sahip bir program çalıştırın (bir kullanıcının yönetici ayrıcalıkları varsa UAC istemi görünecektir);
RunAsAdmin - bir uygulamayı yönetici olarak çalıştırın (UAC istemi her zaman görünecektir).
Bu, RunAsInvoker parametresinin yönetici ayrıcalıkları vermediği, yalnızca UAC istemini bastırdığı anlamına gelir.
Aşağıdaki komutlar, geçerli işlem için RunAsInvoker modunu etkinleştirir ve belirtilen programı yükseltme olmadan çalıştırır:
set __COMPAT_LAYER=RUNASINVOKER
start "" "C:\Program Files\MyApp\testapp.exe"EXE Dosya Bildiriminde RunAsInvoker Modunu Etkinleştirin
Yukarıda bahsedildiği gibi Windows, çalışması için yükseltilmiş ayrıcalıklar gerektiren programlar için UAC kalkanı simgesini görüntüler. Geliştiriciler, uygulamayı manifest programında derlerken bu gereksinimi belirler.
Herhangi bir EXE dosyasının bildirimini düzenleyebilir ve programı yükseltilmiş modda çalıştırma gereksinimini devre dışı bırakabilirsiniz.
Program bildirimini düzenlemek için ücretsiz Kaynak Hacker aracını kullanın. Resource Hacker'da çalıştırılabilir programı açın.
Bu örnekte, bildirimi düzenleyeceğim
Autologon.exeWindows'ta parola olmadan otomatik olarak oturum açmak için kullanılabilen Sysinternals aracı.
Soldaki ağaçta Manifest bölümüne gidin ve program bildirimini açın. Aşağıdaki XML bölümüne dikkat edin:
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>requireAdministrator seçeneği etkinleştirildiğinde, Windows bu programı her zaman yönetici haklarıyla çalıştırır.
RequireAdministrator'ı asInvoker olarak değiştirin ve değişiklikleri .exe dosyasına kaydedin.
Artık UAC kalkanının program simgesinden kaybolduğunu ve yönetici şifresi istemeden mevcut kullanıcı olarak çalıştırabileceğinizi unutmayın.
Yürütülebilir uygulama dosyası bir dijital imza (Kod İmzalama sertifikası) ile imzalanmışsa, exe dosyasını değiştirdikten sonra çalışmayı durdurabilir veya bir uyarı görüntüleyebilir.
Bu durumda, programı harici bir bildirim dosyası kullanmaya zorlayabilirsiniz. Bir düz metin dosyası appname.exe.manifest oluşturun (örneğin,
Autologon.exe.manifest) exe dosyasının bulunduğu dizine kopyalayın ve Resource Hacker'daki bildirim kodunu içine kopyalayın. requireAdministrator'ı asInvoker ile değiştirin. Bildirim dosyasını kaydedin.
Windows'un EXE dosyalarını başlatırken her zaman harici bir bildirim dosyası kullanmayı denemesini sağlamak için özel bir kayıt defteri parametresini etkinleştirin:
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide" /v PreferExternalManifest /t REG_DWORD /d 1 /fWindows'u yeniden başlatın ve programın harici bir bildirim dosyası kullandığından ve yönetici ayrıcalıkları olmadan çalıştığından emin olun.
Programı Kayıtlı Bir Yönetici Parolasıyla Çalıştırmak için Bir Kısayol Oluşturun
Bir programı RunAsInvoker bayrağıyla çalıştırma yöntemleri eski uygulamanız için işe yaramazsa, böyle bir uygulamayı kayıtlı yönetici kimlik bilgilerini kullanarak bir kullanıcı oturumunda çalıştırmayı deneyebilirsiniz. Bu, kullanıcıya yerel yönetici ayrıcalıkları vermeden programları çalıştırmanın en az güvenli yoludur, bu yüzden kasıtlı olarak onu en sona bıraktık.
Programı açmak için masaüstünüzde yeni bir kısayol oluşturun. Bilgisayar adını, yerel yönetici adını ve yürütülebilir hedef uygulamanın tam yolunu belirtin.
Örneğin:
runas /user:wks-123\root /savecred "C:\CorpApp\myapp.exe"Programı ilk kez çalıştırdığınızda, yönetici parolasını girmenizin isteneceği bir komut istemi açılacaktır.
RunAs komutu, /SAVECRED seçeneğiyle çalıştırıldığında, kullanıcı adını ve parolayı Windows Kimlik Bilgileri Yöneticisine kaydeder.
Kısayolun bir sonraki çalıştırılışında runas aracı, Kimlik Bilgileri Yöneticisi'nden kaydedilen parolayı otomatik olarak alacak ve uygulamayı belirtilen yerel yönetici hesabı altında çalıştırmak için kullanacak (kısayolu her açtığınızda sizden parola istenmeyecek) .
Aşağıdaki komut, Kimlik Bilgisi Yöneticisi'nde kayıtlı parolaları listeler:
RunDll32.exe keymgr.dll,KRShowKeyMgrWindows 11'de böyle bir kısayol başlatılırken bir hata oluşuyor:
RUNAS ERROR: Unable to run - C:\CorpApp\myapp.exe
740: The requested operation requires elevation.Bunu düzeltmek için kısayol özelliklerinde komutu değiştirin. şununla değiştir:
C:\Windows\System32\runas /profile /user:WKS-123\root /savecred "cmd.exe /C C:\CorpApp\myapp.exe"/savecred seçeneğini kullanmak yukarıda belirttiğimiz gibi güvenli değildir. Bunun nedeni, profilinde kayıtlı yönetici parolasına sahip bir kullanıcının bu parolayı, yükseltilmiş izinlerle herhangi bir programı veya komutu çalıştırmak veya hatta yönetici hesabı parolasını sıfırlamak için kullanabilmesidir. Kimlik Bilgisi Yöneticisinde depolanan parolalar, Mimikatz gibi araçlar tarafından düz metin olarak da dökülebilir, bu nedenle kayıtlı parolaların kullanımını devre dışı bırakmak daha iyidir.
Windows'ta, Ağ erişimi: Ağ kimlik doğrulaması için parolaların ve kimlik bilgilerinin depolanmasına izin verme (Bilgisayar Yapılandırması -> Windows Ayarları -> Güvenlik Ayarları) Grup İlkesi seçeneğini kullanarak Kimlik Bilgisi Yöneticisinde parolanın kaydedilmesini devre dışı bırakabilirsiniz. -> Yerel İlkeler -> Güvenlik Seçenekleri).
Runas'ta depolanmış bir yönetici parolası kullanmanın dezavantajını aşmanıza izin veren birkaç üçüncü taraf araç vardır. Örneğin, AdmiLink, RunAsRob, RunAsSpc. Bu uygulamalar, şifrelenmiş yönetici parolasını saklamanıza ve programı yönetici ayrıcalıklarıyla güvenli bir şekilde çalıştırmanıza olanak tanır. Bu araçlar, başlatıldığında yürütülebilir dosyanın yolunu ve sağlama toplamını kontrol ettikleri için kullanıcının kayıtlı kimlik bilgileriyle herhangi bir uygulama veya komut çalıştırmasına izin vermez.














