Geçen sene yazdığım bir kişisel içerik filtreleme programını (TemizNet) firewall ve içerik filtreleme yazılımlarının sadece yönetici haklarına sahip kullanıcılar tarafından kullanılabileceğini varsayarak kodlamıştım.
Ama bir çok makul nedenden Windows XP, kısıtlı kullanıcı olarak kullanıcılara kullandırtılıyor. Kısıtlı kullanıcı bilgisayara program yükleyemediği ve/veya zararlı programlar bilgisayara yerleşemediği için etkili bir korunma enstrümanı.
Ancak bu durum, kısıtlı kullanıcıların normal programları kullanmasını da engelliyor, çünkü kısıtlı kullanıcı registry e yazamıyor ve programın kurulu olduğu klasördeki dosyaları ya okuyamıyor ya da güncelleyemiyor.
Söz konusu olan bir kişisel firewall yazılımı olduğunda winsock a inject olarak winsock üzerinden geçen trafiği izlemek en iyi çözüm. (Bir ya da daha fazla uygulamaya inject olmak başka bir yazının konusu olabilir) Ancak process lerin çağrılarını araya girip dinlemek için Administrator Haklarına sahip olmak gerekiyor. Bir de firewall rule larının sürekli güncellenerek bir dosyadan okunması gerektiğinde (aynı ayar dosyasını iki uygulama birden açacak, biri yazarken diğeri canlı olarak ondan okuyacak, bu işlemede MMF memory mapped file adı verilir.) yönetici hakları kesin gerekli gibi duruyor.
Biraz araştırma yaptığımda programların büyük çoğunluğunun limitli kullanıcı desteği vermediğini gördüm! Bu durumda programı çalıştırmak için gerekli ayarları yapmak bilgisayar kullanıcısına kalıyor. Eğer siz de bilgisayarınızda kısıtlı kullanıcı için program çalıştırtmak isterseniz ya da kısıtlı kullanıcıların da kullanabileceği programlar yazmak isterseniz bundan sonrasını takip edin!
Ve Çözüm,
1. İlk olarak bu uygulamayı yönetici hakları ile çalıştırtarak ek ayar yapmadan çözmeyi denedim. Exe dosyasına sağ tıklatarak “Run As” seçeneğini seçip Administrator ya da yetkili kullanıcı ismi vererek parolasını girdiğinizde program çalışıyor. Ama bunu her bilgisayar açıldığında yapmak imkansız! Limitli kullanıcıya Administrator şifresini de vermemelisiniz, o zaman bu seçenek sürekli kullanım için uygun değil.
2. Sistem araçlarındaki Zamanlanmış Görevleri kullanmak. Yeni bir zamanlanmış görev eklersiniz ve Ne zaman seçeneğine, “When my computer starts” dedikten sonra Admin yetkili kullanıcı adı şifre bilgisini verirsiniz. Bu seçenek programların 90% sinde çalışacaktır. Eğer elinizde varolan bir programı kısıtlı kullanıcı olarak çalıştıracaksanız bu seçeneği tavsiye ederim.
3. Ancak programcı iseniz, maalesef kurulum manual’inde “Zamanlanmış Görev eklemelisiniz” diyemezsiniz. Kurulum esnasında sorunu çözmelisiniz. Bu durumda, program klasörü ile programın kullanacağı anahtarlar için kısıtlı kullanıcılara yazma/güncelleme yetkisi vermelisiniz. Bunun için:
a. SetACL’i kullanarak programınız içerisinde kullanıcı haklarına müdahale etmelisiniz. http://setacl.sourceforge.net/ Siteden OCX dosyasını çekerek herhangi bir programlama dilinde kullanabilirsiniz. Bu eklenti ile dosya ve klasörlere, registry deki haklara müdahale edebilirsiniz. Kullanımı gayet kolay olan eklenti ile Admin haklarına sahip bir kullanıcı hak kontrolü yapabilir.
b. Setup oluşturduğunuz program (Installshield, InnoSetup..) ile, kurulum esnasında gerekli hakları atamak. Ben bu projede Innosetup kullandım. Innosetup içerisinde registry ayarlarında:
Root: HKLM; Subkey: SOFTWARE\Programınız; Permissions: users-full; Flags: createvalueifdoesntexist uninsdeletevalue
dediğinizde Programınız altındaki keylere Users grubuna dahil edilmiş tüm kullanıcılar (değiştirilmediği sürece kısıtlı kullanıcılar da) full yetkiye sahip olacaklar ve sorunsuz çalışabilecekler. Ayrıca Files grubunda
Source: ayarlar.dat; DestDir: {app}; Flags: ignoreversion; Permissions: users-full
dediğinizde ayarlar.dat dosyasında tüm kullanıcılar tüm haklara sahip olacaklar. Böylece kurulum anında gerekli ayarlamalar yapılacak ve sorunsuzca programınız çalışacaktır.
Windows Vista cephesinde de durum farklı değil. Aynı yöntemler ile Windows Vista altında da kısıtlı kullanıcı modunda programlarınızı çalıştırabilirsiniz.
Burada ayarlar ile ilgili bilgilendirmeyi üstünkörü geçmiş olabilirim. Benimle iletişim kurarak daha fazla bilgi alabilirsiniz.
Bir taraftan Nexeye Monitor’un yeni sürümünü test ederken bir taraftan da Nexeye WebSniffer ı tamamlamaya çalışıyorum. Nexeye WebSniffer, Nexeye Monitor ile ücretsiz dağıtılacak ayrı bir program. Ağdaki web paketlerini toplayarak dosyaya dönüştürüyor. Evet, gerçekten. A kullanıcısı web de gezinirken bilgisayar ekranında görüntülenen html, css, jpg… hatta indirdiği MP3, zip… dosyalarının bir kopyası WebSniffer programın kurulu olduğu bilgisayarda oluşturulacak. Hem de A kullanıcısının bilgisayarına hiç bir ek yazılım yüklemeden! Nexeye WebSniffer ın daha kararlı çalışması için testler devam ediyor.
Bir taraftan Scada projelerinde kullanılmak üzere Scada ekran tasarımı yapan vektörel bir program yazdım. Emsalleri için +200 USD ödemek gerekliliği göz önünde bulundurulduğunda ve her kuruma bir lisans alınması gerektiği düşünüldüğünde bur programı yazmak gerekliliğini hissettim. Sonuçta projelerde kurumlara ücretsiz verilecek bu program ortaya çıktı. SVG export verebilmesi nedeni ile export edilen scada ekranı hem web projelerinde hem de executable programlarda kullanılabilir. Program içerisinde geniş bir sembol kütüphanesi de mevcut. Programa OPC Server desteği de eklersem belki piyasaya bile sürülebilir. (OPC, UDP ile otomasyon cihazlarından bilgisayara veri aktarımı sağlayan bir standart)