28.09.2014

pstools araçlarıyla ilgili sorun

Eski Windows XP günlerinden beri severek kullandığım pslist, pskill gibi Sysinternals komut satırı araçlarının uzak bilgisayarlar üzerinde çalışırken bazen

Cannot connect to remote registry on computername:
The network path was not found.
Failed to take process snapshot on computername.
Make sure that the Remote Registry service is running on the remote system, that you havefirewall ports allow RPC access
, and your account has read access the following key on the remote system:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Perflib

hatası ile çalışmayı reddetmesinin arkasıda çok basit bir sebep var. Windows XP'den beri varsayılan olarak otomatik çalışır durumda gelen Remote Registry (Uzak Kayıt Defteri) hizmetinin yeni Windows sürümlerinde Manuel olarak gelmesi. Bu hizmetleri uzaktan çalıştırabilirsek araçlarımız sorunsuz çalışıyor. Örneğin uzaktaki bir bilgisayarın Uzak Kayıt Defteri hizmetini çalıştırmak için şu komut kullanıyorum.
psservice \\bilgisayar-adi start RemoteRegistry
Windows 8 ile birlikte bu hizmet, Trigger Start olarak geliyor. Bu da, gerektiği durumlarda çalışabiliyor olması demek. Ama daha önceki Windows sürümlerinde manuel'di. Yani elle müdahale ile çalıştırılabiliyordu.

Trigger start ile biraz uğraştım. Örneğin Windows 8'de remoteregistry hizmetinin tetikleme koşulu şöyle:

C:\>sc qtriggerinfo remoteregistry
[SC] QueryServiceConfig2 SUCCESS

SERVICE_NAME: remoteregistry

        START SERVICE
          NETWORK EVENT                : 1f81d131-3fac-4537-9e0c-7e7b0c2f4b55 [NAMED PIPE EVENT]
            DATA                       : winreg

Amacım bu tetiklemeyi Windows 7 bilgisayarlara da uygulamaktı. Burada 1f81d131-3fac-4537-9e0c-7e7b0c2f4b55 ile geçen bir UUID (universally unique identifier) çoğu durumda bir ETW logunun UUID'si oluyordu. Windows 8 ve Windows 7 bilgisayarlarda mevcut ETW'lerin UUID'lerini inceledim, ama eşleşme bulamadım.

C:\>logman query providers | find /i "1ce20aba-9851-4421-9430-1ddeb766e809"

Şu adreste denmiş ki, remoteregistry hizmeti için tetikleme bağlantısını kaldırmak için şu komut yeterli:

sc triggerinfo "remoteregistry" delete

Eğer istenirse bu tetikleme tekrar şu komutla devreye alınabilir:

sc triggerinfo remoteregistry start/namedpipe/1f81d131-3fac-4537-9e0c-7e7b0c2f4b55

Çok güzel, peki bu komutu Windows 7'de çalıştırabiliyor muyuz? Tabi ki hayır. O UUID her neyse, Windows 7'de hiçbir şeye tekabül etmiyor.

Hiç yorum yok: