Administrator yetkisi ile process başlatma

serose

Femtopat
Katılım
31 Aralık 2020
Mesajlar
54
Merhaba, Visual Studio'daki Windows forms uygulaması yapıyorum. Başlıktaki gibi istediğim dosyayı yönetici olarak istediğim dizinden açmasını istiyorum.

Normalde Process.Start(C:\...\dosya.bat) yapınca dosya sıkıntısız açılıyor ama ben yönetici olarak açılmasını istiyorum. Nasıl yapacağım?
 

nenerdeyim

Femtopat
Katılım
4 Mayıs 2021
Mesajlar
44
Yer
Beijing, China
const int ERROR_CANCELLED = 1223;

ProcessStartInfo info = new ProcessStartInfo(@"C:\Windows\Notepad.exe");
info.UseShellExecute = true;
info.Verb = "runas";
try
{
Process.Start(info);
}
catch (Win32Exception ex)
{
if (ex.NativeErrorCode == ERROR_CANCELLED)
MessageBox.Show("Why you no select Yes?");
else
throw;
}
Kodu internetten buldum, bi sorun göremedim ama denemedim de tabi, haberin olsun.
 

permatik

Decipat
Cezalı
Katılım
7 Ocak 2020
Mesajlar
1.673
Çözümler
2
Visual Studio'yu Administrator olarak başlatırsın ve kodunu da öyle yazarsın ve derlersin. Yetkiler uygulamaya geçmiş olmalı.
 

CATCH.33

Picopat
Katılım
12 Nisan 2021
Mesajlar
49
Çözümler
1
Bat dosyasının içine:
cmd-bat:
powershell -command "start-process -verb runas [program]"
komutunu kaydedebilirsin.

Örnek:

cmd-bat:
powershell -command "start-process -verb runas cmd"
veya
cmd-bat:
powershell -command "start-process -verb runas C:\Windows\System32\cmd.exe"

(Not ve Düzeltme: Arkadaş sistem api'si yardımıyla başlatmayı sormuş, eksik okumuşum kusura bakmayın.)
 
Son düzenleme:
KS
serose

serose

Femtopat
Katılım
31 Aralık 2020
Mesajlar
54
Kendim çözdüm arkadaşlar bat dosyasının içerisine şunu yazdım:

@Echo off

:: BatchGotAdmin
:-------------------------------------
REM --> İzin kontrolü yapılıyor
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> Eger hata alınırsa yönetici değiliz demektir.
if '%errorlevel%' NEQ '0' (
echo Administrator izni isteniyor...
goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params = %*:"=""
echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B

:gotAdmin
pushd "%CD%"
CD /D "%~dp0"
:--------------------------------------
 
Yukarı