AutoPlay Media Studio AIO Programına PC'yi USB'den Başlatma Butonu Ekleme

angelos

Yeni Üye
Kayıtlı Üye
AİO program hazırladım tasarım herşeyi bitti ama insanın yaptıkça yeni bişeyler ekleme isteği bitmiyor. Hazırladığım programıma bi buton koyup pc yi yeniden başlatma olayını usb ile başlat şeklinde ayalayabilirmiyiz.Format atmak için biosa girip usbyi seçmek zorunda kalmayalım her seferinde olabilirliğini bilmiyorum ama olursa güzel olur :)
 
Son düzenleme:
Evet, bunun bir kısmı AutoPlay Media Studio ile yapılabilir. Ancak önemli bir nokta var: Windows içerisinden bilgisayarı yeniden başlatmak kolay, fakat her bilgisayarda BIOS/UEFI'ye girmeden belirli USB belleği doğrudan seçip boot ettirmek garanti edilemez.

AMS tarafında öncelikle bilgisayarı yeniden başlatan bir buton yapılabilir:

Kod:
local sonuc = Dialog.Message(
"Bilgisayarı Yeniden Başlat",
"Bilgisayar yeniden başlatılacak. Devam etmek istiyor musunuz?",
MB_YESNO,
MB_ICONQUESTION,
MB_DEFBUTTON2
);

if (sonuc == IDYES) then
Shell.Execute("shutdown.exe", "-r -t 0", "", SW_SHOWNORMAL, false);
end

Fakat bu kod sadece Windows'u yeniden başlatır. USB'den başlatma kısmı bilgisayarın BIOS/UEFI boot ayarlarına bağlıdır.

Eğer amaç format USB'sini her seferinde BIOS'a girip seçmeden başlatmaksa, daha gelişmiş olarak Windows'un UEFI önyükleme seçenekleri üzerinden sonraki açılışta farklı bir boot seçeneğini kullanmak araştırılabilir.

Ancak USB'nin BIOS tarafından hangi isimle ve hangi boot kaydıyla görüldüğü bilgisayardan bilgisayara değiştiği için, tek bir AMS koduyla tüm bilgisayarlarda "USB'den başlat" garantisi vermek mümkün değildir.

İstersen AIO programına bunun için "USB'den Başlat" butonu + USB kontrolü + yeniden başlatma şeklinde daha gelişmiş bir sistem de hazırlanabilir.
 
Uydudoktoru.com'daki "AutoPlay Media Studio AIO Programına PC'yi USB'den Başlatma Butonu Ekleme" konusu için, AIO (All-In-One) menünüze yerleştireceğiniz butona basıldığında bilgisayarı yeniden başlatıp doğrudan USB bellekten (Bootable USB) başlatmayı hedefleyen pratik bir Lua betik çözümü hazırladım.

Windows işletim sistemlerinde doğrudan "bilgisayarı USB'den başlat" komutu veren tek adımlı standart bir API bulunmaz. Ancak bu işlem iki aşamalı olarak çözülür:

  1. Bilgisayarı doğrudan Gelişmiş Başlangıç / UEFI Donanım Yazılımı (BIOS) ekranına yeniden başlatmak (shutdown /r /fw /t 0 komutu ile).
  2. Alternatif olarak standart bir yeniden başlatma komutu göndermek.
Aşağıdaki kodları AIO projenizdeki USB'den Başlat Butonu'nun (On Click olayına) ekleyerek kullanıcıyı doğrudan UEFI/BIOS menüsüne yönlendirebilir ve oradan tek tuşla USB'den boot edilmesini sağlayabilirsiniz:

USB'den Başlat Butonu (Button - USB Boot) Lua Kodları:​

Kod:
-- Kullanıcıya işlem hakkında bilgi verelim ve onay alalım
local uyari = Dialog.Message("USB'den Başlatma", "Bilgisayar yeniden başlatılacak ve doğrudan UEFI/BIOS ekranına yönlendirilecektir.\n\nDevam etmek istiyor musunuz?", MB_YESNO, MB_ICONQUESTION, MB_DEFBUTTON2);

if (uyari == IDYES) then
    -- Windows'u doğrudan UEFI Firmware (BIOS) ayarlarına yeniden başlatan komut
    -- Bu sayede kullanıcı anakartın boot menüsünden (F8, F11, F12 vb. tuşlarla uğraşmadan) doğrudan USB'yi seçebilir.
    local sonuc = System.Execute("shutdown.exe", "/r /fw /t 0", "", SW_HIDE, false);
    
    if (sonuc ~= 0) then
        -- Eğer sistem UEFI desteklemiyorsa veya yetki sorunu olursa standart yeniden başlatma yedek komutu
        System.Execute("shutdown.exe", "/r /t 0", "", SW_HIDE, false);
    end
end

Kodun Açıklaması:​

  • /r: Bilgisayarı yeniden başlatır (Restart).
  • /fw: Bilgisayar UEFI destekli bir anakarta sahipse, bir sonraki açılışta doğrudan anakartın ayar ekranına (Firmware / BIOS) düşmesini sağlar. Böylece kullanıcı hazır takılı olan USB belleğini ilk boot sırasına alabilir veya boot menüsünden seçebilir.
  • /t 0: Geri sayım yapmadan hemen işlemi gerçekleştirir.
 
Geri
Yukarı