Windows RDC bağlantısında uygulamayı veya komut dosyasını çalıştırın


7

Başka bir konuyu kontrol ettim ( Windows'da oturum açtığımda otomatik olarak bir betiği çalıştır ) , ancak sorunumu çözmedi.

Bir bağlantı kurulduğunda bir komut dosyasını çalıştırmak için gereken benim ağ üzerinden , Windows kullanarak Uzak Masaüstü Bağlantısı .

Yukarıda listelenen iplik için çalışan ilk Ancak login (benim ağ üzerinde çalışan bazı işlemler için gerekli olan) oturumu yoksa, o zaman tekrar komut yayınlanmaz kullanarak sisteme birisi daha bağlandığında Uzak Masaüstü Bağlantısı. Daha önce bunu başarmak için pcAnywhere kullanıyorduk, ancak pcAnywhere ile ilgili bazı grafiksel sorunlara girdikten sonra, RDC'ye geçmeye karar verdik.

Arka plan: Belirli makinelerle bağlantı kurulduğunda herhangi bir e-posta gönderilmemiz gerekiyor. Oturum açma adı her zaman bu sistemler için aynı olacaktır ve bağlantıyı kapatırken oturumu kapatmayız.

Yanıtlar:


4

Bildiğim kadarıyla, Windows bağlantıda bir program veya komut dosyası çalıştırmak için yerleşik bir yöntem sunmuyor , yalnızca oturum açın. Windows'a kayıt yapan ( WTSRegisterSessionNotification'ı kullanarak ) ve WM_WTSSESSION_CHANGE mesajını dinleyen bir program bulmanız gerekir .

Yukarıdakileri yapan bir program, Windows'tan kullanıcı oturum açma, oturum açma, bağlantı, bağlantı kesme ve oturum açma işleminin yanı sıra bağlantıda bir komut dosyasını başlatmak için gereken tüm olaylarla ilgili bildirimler alır.

Kafamın üstünden bunu yapabilen herhangi bir uygulama (pcAnywhere dışında) bilmiyorum.


Bu ihtiyacım olanın sadece% 100'ü. İhtiyaçlarım için çalıştığını doğrulamak için hızlı bir şekilde sağladığınız sayfadaki ambalajı genişletebildim. Şimdi, bağlantı makinesinin adını ve giriş yapmış olan kullanıcısını almam gerekiyor. Bu bilgiyi kafanın üstünden nereden çıkaracağını biliyor musun?
Nick Larsen

1
Biraz daha derine inerek, ihtiyaçlarım için zaten yazılmış bir ambalaj olduğunu gördüm. msdn.microsoft.com/en-us/library/…
Nick Larsen

7

Yeni bir zamanlanmış görev yapabilir ve tetikleyiciyi "Bir kullanıcı oturumuyla yeni bir bağlantı anında" olarak tanımlayabilirsiniz.


“Bazı açıklamalar ve bağlamlar sunan uzun cevaplar arıyoruz. Sadece bir satırlık cevap vermeyin; cevabınızın neden doğru olduğunu, ideal olarak alıntılarla açıklayın. Açıklama içermeyen cevaplar kaldırılabilir.”
gparyani,

1
@gparyani, ihtiyacım olan her şey bu. Bana sorarsan bir sürü ekrana gerek yok.
Arjan

0

.Net ile programlamaya aşina iseniz, bu konuya Stack Overflow'ta bakmak isteyebilirsiniz .

Steven A. Lowe'ye göre:

iddiaya göre,

System.Windows.Forms.SystemInformation.TerminalServerSession Uzak masaüstü oturumu (veya VNC oturumu) için doğru olacaktır

Ayrıca, varsayılan olarak TCP 3389 olan RDP'deki bir bağlantıyı da izleyebilirsiniz.


1
Bir bağlantı kurulduğunda .TerminalServerSession doğru dönmelidir, ancak ateşlenecek bir olay yoktur. Ek olarak, bir kullanıcı bağlantısı kesildiğinde ve program hala çalışıyorsa, bir terminal sunucusu oturumunda çalıştırıldığı için gerçek olarak geri dönecek ve kullanıcı yeniden bağlandığında hiçbir bilgiye sahip olmayacaktır.
Joshua

0

"Kullanıcı oturumuna bağlantıda" tetikleyicisini kullanın

Not: Yalnızca sorunun "XP" / "Server2008" olarak etiketlendiğini fark ettim. Buradakiler yalnızca Vista / 2008R2’den sonra çalışabilir.

Windows görev zamanlayıcısı bunun için önceden tanımlanmış bir tetikleyiciye sahiptir. Denir On connection to user session.

Ayrıca, kullanıcılar arasında ve yerel veya uzak bağlantılar arasında ayrım yapmanızı sağlar.

Bu tetikleyiciyi oluştururken varsayılan: Any userve Connection from remote computer. Bu istediğin gibi görünüyor, bu yüzden bunu değiştirmek zorunda değilsin.

Burada ekran görüntüsü: Tetikleyicinin ekran görüntüsü

Kaynak: Microsoft TechNet: Görev Zamanlayıcı | Tetikleyiciler ( Burada arşivlendi .)

daha fazla okuma

Bu görevi verdiğinizde ve sonra dosyanın içine baktığınızda, bunun bir tür tetikleyici olduğunu göreceksiniz SessionStateChangeTrigger: Tetik detayı MSDN'de derinlemesine belgeler var:

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.