Administrator yetkisi ile process başlatma

serose

Femtopat
Katılım
31 Aralık 2020
Mesajlar
56
Daha fazla  
Cinsiyet
Erkek
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?
 
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.
 
Visual Studio'yu Administrator olarak başlatırsın ve kodunu da öyle yazarsın ve derlersin. Yetkiler uygulamaya geçmiş olmalı.
 
Bat dosyasının içine:
[CODE lang="bash" title="cmd-bat"]powershell -command "start-process -verb runas [program]"[/CODE]
komutunu kaydedebilirsin.

Örnek:

[CODE lang="bash" title="cmd-bat"]powershell -command "start-process -verb runas cmd"[/CODE]

veya
[CODE lang="bash" title="cmd-bat"]powershell -command "start-process -verb runas C:\Windows\System32\cmd.exe"[/CODE]

(Not ve Düzeltme: Arkadaş sistem api'si yardımıyla başlatmayı sormuş, eksik okumuşum kusura bakmayın.)
 
Son düzenleme:
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"
:--------------------------------------
 

Yeni konular

Geri
Yukarı