Mulai program pada startup komputer ketika tidak ada yang masuk dan tampilkan jendela ketika seseorang masuk (OS: Windows)

19

Saya memiliki program yang diluncurkan pada startup sistem menggunakan Penjadwal Tugas pada Windows Server 2012. Program harus mulai bahkan jika komputer reboot secara otomatis.

Administrator adalah akun yang digunakan untuk memulai program, opsi "Jalankan apakah pengguna masuk atau tidak" diperiksa untuk tugas tersebut.

Masalah dengan ini adalah ketika seseorang akhirnya masuk sebagai Administrator menggunakan Remote Desktop Connection antarmuka (program window) disembunyikan.

Seperti yang saya mengerti tidak ada cara untuk menyelesaikan ini menggunakan Penjadwal Tugas.

Bagaimana saya bisa memecahkan masalah ini?

Seharusnya masalah yang cukup umum tetapi saya tidak dapat menemukan apa pun dengan mencari di internet. Saya cukup terkejut bahwa Microsoft mengizinkan batasan seperti itu dalam penjadwal mereka. Bisakah saya membuat VBScript atau sesuatu yang berjalan saat startup dan meluncurkan program yang kemudian akan terlihat ketika pengguna benar-benar masuk?

Ide lain?

(Saya tidak ingin harus membuat program GUI-saja terpisah yang menghubungkan ke program asli dengan cara. Saya juga akan lebih suka jika saya tidak harus menghentikan program yang sudah berjalan setelah login pengguna dan kemudian meluncurkan lagi.)

Marcus
sumber
2
Firedaemon, instal aplikasi sebagai layanan, ketika RDP di alihkan ke "Session 0" menggunakan Firedaemon. Lihat aplikasinya.
TheCleaner
Ini secara teknis dapat dilakukan jika Anda mengembangkan layanan Anda sendiri.
Ryan Ries
1
Jawab saja pertanyaan saya sendiri. Saya tidak dapat menerima jawaban saya sendiri selama dua hari, karena sistem di sini di serverfault.com sangat buruk (kebanyakan orang sekarang hanya akan meninggalkan halaman ini tanpa menunggu dua hari dan meninggalkan pertanyaan selamanya ditandai sebagai belum terpecahkan).
Marcus
2
@Marcus: Batas siapa yang dapat melakukan apa dan kapan dimaksudkan untuk menghentikan pelanggaran tertentu. Sayangnya mereka kadang-kadang menyebabkan ketidaknyamanan bagi upaya tulus untuk melakukan hal-hal yang benar, tetapi kadang-kadang kompromi semacam itu perlu dilakukan. Jika Anda memiliki saran yang dapat meningkatkan situasi (melindungi situs setidaknya juga tetapi kurang menyenangkan pengguna asli) itu akan menjadi ide yang lebih baik untuk meningkatkan pemikiran melalui situs "meta" yang relevan ( meta.serverfault.com , meta. stackoverflow.com ) daripada mengeluh dalam komentar bahwa pelari situs sangat tidak mungkin melihat.
David Spillett
Seperti yang dapat Anda lihat dari pemungutan suara, jawaban yang ingin Anda terima bukanlah jawaban yang disetujui orang karena cara Anda mencoba untuk menyelesaikannya adalah salah.
JamesRyan

Jawaban:

28

Menemukan cara melakukannya sendiri. Ini semacam solusi tapi itulah yang saya harapkan.

Berhenti! Jangan ngeri dulu. Baca terus ...

  • Jalankan, atur sehingga Administrator harus masuk secara otomatis.

  • Buat tugas di Penjadwal Tugas. Setel agar dijalankan hanya ketika pengguna (Administrator) masuk. Pemicu adalah "saat masuk" dan tentukan bahwa itu hanya saat Administrator masuk.

  • Buat tugas kedua. Jalankan hanya ketika pengguna masuk, memicu di admin masuk. Tindakan harus "memulai program" dan program adalah "C: \ Windows \ System32 \ rundll32.exe" dengan bidang argumen diatur ke "user32.dll, LockWorkStation".

Apa yang terjadi sekarang jika Anda me-restart komputer adalah bahwa Administrator secara otomatis log on, program yang ingin Anda mulai dimulai dan stasiun kerja menjadi terkunci. Jika saya masuk melalui Remote Desktop Connection saya bisa melihat jendela program dan menggunakan GUI. Saya dapat mengunci / membuka kunci komputer tanpa masalah dan melepaskan / menyambung kembali sesuka saya. Tidak ada masalah jika saya pergi ke server dan masuk di workstation yang sebenarnya juga. Karena Administrator sudah masuk dalam tugas tidak akan berjalan lagi (itu tidak membuat beberapa loop-in-lock-loop tak terbatas yang Anda tidak dapat keluar dari).

Sederhana seperti itu. Memang ada periode waktu satu detik sebelum komputer terkunci setelah login otomatis dan saya kira seorang hacker pro dengan akses fisik ke komputer dapat melakukan sesuatu yang licik selama jendela waktu ini, tetapi dalam kasus saya, saya dapat mengabaikan risiko keamanan itu. Selama saya tidak membiarkan peretas pro masuk ke rumah saya dan menunjukkan kepada mereka komputer, sistemnya seharusnya relatif aman. Di atas semua itu tidak ada banyak nilai pada komputer yang membutuhkan perlindungan super-vault jadi saya cukup senang dengan solusi ini.

Marcus
sumber
7
Tidak menghormati (atau menurunkan suara), Marcus. Tetapi jika ini benar-benar jenis jawaban yang Anda cari, pertanyaan ini akan lebih cocok untuk SuperUser .
Ryan Bolger
2
Tidak mudah untuk memutuskan pertukaran tumpukan apa untuk memposting ini.
Marcus
Halo Marcus, saya mengikuti jawaban Anda tetapi saya memiliki masalah meluncurkan dua program dengan GUI, bukan hanya satu. Saya telah mengirim pertanyaan di SuperUser. Jika Anda bisa menjawabnya di sana, itu akan sangat membantu - superuser.com/questions/902386/…
user2162550
1
Sebenarnya downvoting itu sekarang juga karena itu BUKAN jawaban untuk pertanyaan. Pertanyaannya secara eksplisit menentukan siang hari sedang login - dan "solusi" Anda di sini membuat login otomatis (jadi seseorang IS login). Mungkin bukan fomulasi yang cerdas dalam pertanyaan, tetapi pertanyaannya adalah apa adanya.
TomTom
1
@TomTom Sebagai opsi yang disajikan kepada pengguna akhir "Jalankan apakah pengguna masuk atau tidak" tentu saja bisa berarti "Anda tidak perlu berada di sini untuk menjaga agar itu dimulai."
Aryeh Leib Taurog
16

Saya memiliki program yang diluncurkan pada startup sistem menggunakan Penjadwal Tugas pada Windows Server 2012. Program harus mulai bahkan jika komputer reboot secara otomatis.

Lalu mengapa Anda tidak menjadikannya layanan sistem, seperti yang ditentukan oleh spesifikasi windows?

Bagaimana saya bisa memecahkan masalah ini?

Kamu tidak bisa. Program latar belakang tidak seharusnya berinteraksi dengan UI. Atau: UI harus menjalankan programnya sendiri yang kemudian terhubung ke layanan. UI berjalan di ruang pengguna pengguna yang login melakukan presentasi, layanan windows melakukan pemrosesan. Ini adalah bagaimana model ini dirancang untuk sekitar 15 tahun atau lebih.

Saya cukup terkejut bahwa Microsoft mengizinkan batasan seperti itu dalam penjadwal mereka.

Saya lebih terkejut Anda tidak pernah bertanya mengapa.

Ada beberapa masalah:

  • Ketika beberapa orang masuk, siapa yang mendapat UI?
  • Ketika pengguna logout, Anda membunuh program? ADUH.
  • Keamanan. Program latar belakang dapat berjalan di bawah hak terbatas - mengekspos UI kepada pengguna berarti pengguna dapat mengeksekusi kode di sana. Model pesan windows adalah - ah - penuh dengan masalah.

Saya tidak ingin harus membuat program khusus GUI yang menghubungkan ke program aslinya.

Baik saya maupun Microsoft pada saat ini tidak peduli apa yang ingin Anda lakukan. Ada model yang didirikan dan didukung untuk mengikat pemrosesan latar belakang menjadi UI pengguna yang login - gunakan, atau tidak. Tetapi ketika tidak, jangan mengeluh tentang masalah keamanan yang Anda pasang.

TomTom
sumber
3
Amin. Saya berharap lebih banyak vendor aplikasi memahami konsep ini.
Ryan Bolger
15
Wow bukankah Anda angkuh dalam sikap Anda. Kurasa aku kurang beruntung. Kecuali Anda salah informasi dan seseorang memiliki cara untuk menyelesaikan ini, semua orang tidak dapat mengetahui segalanya sehingga Anda mungkin salah dengan bagian "Anda tidak dapat" yang absolut dari pos Anda. Saya ingin membiarkan pertanyaan terbuka untuk lebih banyak jawaban untuk sementara waktu, hanya untuk berjaga-jaga jika ada orang yang memiliki solusi yang tidak biasa untuk dibagikan. Saya akan menerima jawaban Anda.
Marcus
Sebenarnya semakin sulit untuk memberikan UI ke layanan saat ini pada versi Windows saat ini, tetapi bukan tidak mungkin.
MDMoore313
Secara aktif tidak diinginkan karena sebagian besar masalah keamanan. Masalah utama di sini adalah - dan Anda benar-benar perlu mendapatkannya - jika Anda menampilkan jendela di UI saya, saya dapat menjalankan kode dalam proses Anda. Saya kemudian dapat mengirim Anda pesan windows dan yang memiliki banyak hal yang dapat dieksploitasi. Biasanya bukan masalah - karena jika itu adalah aplikasi pengguna, saya hanya bisa melakukan hal-hal yang saya sebagai pengguna bisa .... tetapi jika layanan memiliki hak istimewa lebih tinggi, ini dia mimpi buruk keamanan. Inilah sebabnya mengapa ini ditutup bertahun-tahun yang lalu dan semua orang yang belajar pemrograman dan membaca dokumentasi harus membacanya
TomTom
1
Jika Anda benar-benar ingin pergi ke sana, Anda dapat mencoba langkah-langkah di coretechnologies.com/WindowsServices/FAQ.html#GUIServices - tidak yakin mereka masih bekerja di windows saat ini tetapi ada cara untuk membuat accessbile UI - dan membuka semua masalah keamanan .
TomTom
0

Ini semua tentang Sessionprogram Anda berjalan masuk. Jika tidak ada yang login, tidak ada sesi interaktif untuk ditampilkan di bawah, saya percaya itu berjalan di bawah Session 0, yang memiliki UI aneh yang tidak muncul seperti yang lain.

Sekarang, jika program Anda mendeteksi ketika explorer.exediluncurkan (atau cara lain untuk mendeteksi login pengguna) dan secara ajaib membentuk kembali dirinya sendiri atau menelurkan beberapa proses anak pada sessionid baru itu, maka siapa pun yang login akan dengan senang hati melihat apa yang Anda lakukan.

MDMoore313
sumber