Program kayıt defteri çalıştırma anahtarından başlatılamıyor


1

Bir NSIS betiği kullanarak kurduğum bir program var. Yükleyicideki son adım Run anahtarına kayıt olmak ve programın başlangıçta çalışmasını sağlamaktır. Bunu altında onayladım

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run 

anahtar var

MyCompany Program - C:\MyCompany\Program\launch.vbs

Anahtarı tırnaklı ve tırnaksız da denedim, ancak bir etkisi olmadı. Kayıt defterinin CurrentVersion \ Run'dan okuduğunu onayladım

Notepad - C:\windows\notepad.exe

ve Notepad şimdi başlangıçta başlattı. Launch.vbs betiği, cmd.exe penceresi olmayan bir betiği başlatmak için kullanılan bir dizektir:

'HideBat.vbs from https://superuser.com/questions/140047/how-to-run-a-batch-file-without-launching-a-command-window
CreateObject("Wscript.Shell").Run "cmd /c " & chr(34) & "C:\MyCompany\Program\run.cmd " & chr(34), 0, True

Bir explorer penceresinden veya cmd.exe'den launch.vbs'i çağırmayı onayladım (beklediğim gibi çalışıyor). msconfig, C: \ MyCompany \ Program \ launch.vbs dosyasının başlangıç ​​sekmesinde listelendiğini onaylar. Dosya Özellikleri'nin güvenlik sekmesi, tüm kullanıcıların okuması gerektiğini belirtir. ayrıcalıkları yürütün. Aynen, run.cmd de denir.

Bu noktada, programımın neden başlatılmadığına dair bir zararım var ve programın hatalarını ayıklamak için etkili bir yol bulamıyorum.

Sistem Windows 7 Professional 64-bit'tir.


Bir .vbs çalıştırmak için aramanız gerekir cscript Bence. Koymak cscript your_script.vbs "Çalıştır" 'da ve işe yarayıp yaramadığına bakın. Düşerken aynı şeyi yapmak için bir .bat yazmak zorunda kalacaksınız.
Kinnectus

Önündeki cscript'i koyarak, hemen sonlandırılan çok kısa bir cmd.exe penceresi görüyorum. Aslında programı başlatmıyor.
guest

cscript kullanmayın, bunun yerine wscript kullanmayın. cscript betiği bir konsol penceresinde çalıştırarak her zaman bir tane görmenizi sağlar ve bu da tam olarak kaçınmak istediğiniz şeydir. Bir 'in önüne gelmek, bir çizgiyi yorumlamanızı sağlar. Bunu .vbs betiğinizdeki hatta yapın. Yeni bir satır ekleyin ve yazın: msgbox "test". şimdi .vbs betiğini çalıştırın ve msgbox açılıp açılmadığına bakın. Sonra yeniden başlatıp, yapıp yapmadığına bakın. Bu, komut dosyasının yüklenip yüklenmediğini ve sorunun nerede arayacağını belirtir.
LPChip

Aramadan önce msgbox "STARTING" ve aramadan sonra "SON" msgbox ekleme ve betiğin çağrıldığını onayladım. Başlangıçta çalıştırmanın neden çalışmadığını anlamak zorunda kalacak, ancak daha sonra komut dosyasını çağırmak gerekir. Cscript.exe komutları stdout'a basacak şekilde yapılandırılabilir mi (bash -x gibi)?
guest

32 bit kayıt defteri düğümüne koyduğunuzu da farkettim, neden? Bu bir fark yaratabilir.
Ramhound

Yanıtlar:


1

LPChip'in yardımıyla, mesaj kutusu hata ayıklamaya başladım ve betiğin başlatıldığını, ancak hatalı olduğunu onayladım. Launch.vbs dosyasını güncelledim

CreateObject("Wscript.Shell").Run "cmd /k " & chr(34) & "C:\MyCompany\Program\run.cmd " & chr(34), 1, True

(pencereyi canlı tutmak için / k, göstermek için 1'e dikkat edin). Oradan, Java'nın CurrentVersion \ Run aracılığıyla başlatılan komut dosyaları için sınıf yolunda ayarlanmadığı açıktı. Run.cmd'de java yolunu (müşterilerimiz zaten kullanmak zorunda kalacakları) zor bir şekilde kodlamak sorunu çözdü.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.