1

Konu: Uzak masa üstü bağlantısında kullanıcı sınırlaması

herkese slm
uzak masaüstü bağlantısında kullanıcı sınırlaması nasıl yapılabilir?

2 Son düzenleyen, neyzen (20.06.2009 11:45:22)

Re: Uzak masa üstü bağlantısında kullanıcı sınırlaması

erdalyalçın,Kullanıcı sınırlamasından, Harddisk sürücüleri üzerindeki klasör ve dosyaların userler tarafından görüntülenmemesi,ancak izin verdiğin programların çalıştırılması olduğunu varsayarak,Windows server 2008 kullanan biri olarak ayarlarımı yazıyorum.(2003 server de de benzerdir.Daha önce görmüştüm ancak ben direk 2008 den başladığım için yerleri ve menü isimleri farklı olabilir.)Öncekikle her kişiye, Aktif direcoty kullanıcıları ve bilgisayarları menüsünden  kullanıcı ve şifre oluşturuyorsun.Bende İnternet üzerinden erişim olduğundan Domain users ve remote desktop users gruplarınada her kişiyi üye olarak atadım.Daha sonra Server üzerindeki disk sürücüleri üzerine gelip sağtuş /Özellikler/güvenlik/ sekmesinde  "Users" grubunu kaldırıp,"Everyone" grubunu ekleyip izinler kısmında tüm işaretleri kaldırıp "Yaz" izini veriyorum.Gerçi burada "Users" grubuna da bu işlem uygulansa belki aynı sonucu verebilir denemek lazım.
   daha sonra İşletim sisteminin kurulu olduğu diskte "Kullanıcılar(USERS)" klasörü var.Buraya oluşturduğun her kullanıcı için profil açıyor.istediğin kullanıcıyı seçiyorsun.Desktop klasörüne istediğin programın kısa yolunu kopyalıyorsun.İstediğin programı o user masa üstünde görüyor ve kullanıyor.C yada D sürücüsünde herhangi bir klasörü incelemek isterse,Admin şifresi sorulduğundan sorun çözülmüş oluyor.Kullanıcı kendi masa üstünde ve kendi belgelerim klasöründe çalışmış oluyor.Umarım işini görür.İsteğimi tam olarak yazarsan,sanırım daha fazla yardımcı olabiliriz diye düşünüyorum.Kolay gelsin..

En büyük sermaye nakit,nakit sermaye vakittir...

3

Re: Uzak masa üstü bağlantısında kullanıcı sınırlaması

üstad bu söylediğin ayar lar sistemcinin yapması gerekenler ve bunu fabrikanın bilgi işlemi yapıyor
benim sorunum şu programı 5 kullanıcı olarak sattım.
normal networkteki kullanıcıların  protect olayını program kontrol ediyor fiziksel olarak başka makina olduğu için.
ama müşteri uzak masa üstü bağlantısında 10 kullanıcı olarak kullanabiliyor.
çünkü ana makinatada programın çalışması ayarlandığında uzak masa üstüyle bağlanabilen tüm kullanıcılar programı orda kullanabiliyor.
anlatabildimmi ?  yani müşterinin kendi sistemcisi var ve ona bağlı bana değil
ben programın protect algoritması konusunda öneri istiyorum.
sistem ayarlarını müşteriler hallettirirler. biz müdahale edemeyiz

4 Son düzenleyen, neyzen (20.06.2009 13:19:07)

Re: Uzak masa üstü bağlantısında kullanıcı sınırlaması

üsdadım,şimdi olayı daha net anladım sanırım.Geçenlerde aynı olay bizim başımıza geldi.Şirket muhasebesinde kullanılan çok meşhur bir program 4 kullanıcılı olararak satın alınmış.Bizde var 14 kullanıcı ? eee ne yapacaz şimdi :-) ?
Hemen kurdum Programı Server 2008 e şakır şakır çalışıyor ayıptır söylemesi.Bence bu problem  şu şekide çözülebilir.Programına muhtemelen user name ve şifre ile girdiriyorsundur.Bunları girerken bir yere yazsan ve aynı anda database yi kullanan kişileri saysan, kullanıcı sayısı örneğin 5 i geçtiğinde uyarsa? bizde bir program var adamlar bunu yapmış.Bence bu şekilde olabilir sen ne dersin?Diğer üsdatların görüşlerinde önemli tabiiki

En büyük sermaye nakit,nakit sermaye vakittir...

5

Re: Uzak masa üstü bağlantısında kullanıcı sınırlaması

Ben kullanici sinirlamak icin yapmiyorum ama her baglananin, network kart numarasi, makine adi, giris, cikis zamanlari ve o oturumlarina ait (ayni makineden birden fazla oturum acsa da her biri ayri) bir ID'yi sakliyorum. Sanirim sen bunu ayni anda acik olanlari saymak icin kullanabillirsin. Sunun gibi birsey:

Visual Fox Pro
* CREATE TABLE cnlog ;

* (NIC c(12), CName c(50), UNAME c(50), uptime t, downTime t null, uID c(38))
 
PUBLIC oApp
oApp = Createobject('myApp')
IF oApp.CountSessions() < 5
   oApp.LogEntry(.T.)
ELSE
   ? "Kullanici kotasi dolu", oApp.CountSessions()
   RETURN
endif
 
? "Kullanima izin verildi", oApp.CountSessions()
ON SHUTDOWN do appShutdown
*read events
 
PROCEDURE appshutdown
  oApp.LogEntry() && exit
endproc
 
Define Class myApp As Custom
  sessionID = .null.
 
  Procedure LogEntry(tlEntry)
    Local oSys,lcMacAddress,lcUserName,lcComputerName,ltTime,lcGUID
    oSys = Createobject('sysutil')
    lcMacAddress = oSys.getMac()
    lcComputerName = Upper(oSys.ComputerName())
    lcUserName = oSys.UserName()
    ltTime=Datetime()
 
    this.CloseOrphans(m.lcMacAddress, m.lcComputerName)
 
    If m.tlEntry
      lcGUID = oSys.getGUID()
      Insert Into cnlog ;
        (NIC, CName, UNAME, uptime, downtime, uID) ;
        VALUES ;
        (m.lcMacAddress, m.lcComputerName, m.lcUserName, m.ltTime,NULL, m.lcGUID)
      * Create semaphore
      this.IsAppRunning(Trim(m.lcGUID)) && Start semaphore
      this.sessionID = m.lcGUID
    Else
      lcGUID = this.sessionID
      Update cnlog Set downtime = m.ltTime Where uID = m.lcGUID
    Endif
  Endproc
 
  Procedure CloseOrphans(m.tcMacAddress, m.tcComputerName)
    Local Array aOpenSession[1]
    Local ltTime
    ltTime = Datetime()
    Select uID From cnlog ;
      WHERE NIC = m.tcMacAddress And CName = m.tcComputerName And downtime Is Null ;
      INTO Array aOpenSession
    If _Tally > 0
      Local ix
      For ix=1 To Alen(aOpenSession,1)
        If !this.IsAppRunning(Trim(aOpenSession[m.ix,1])) && Check if it's already running
          Update cnlog Set ;
            downtime = m.ltTime, forced = .T. ;
            WHERE uID = aOpenSession[m.ix,1]
        Endif
      Endfor
    Endif
  Endproc
 
  Procedure IsAppRunning
    Lparameters tcSemaphoreName
    Local hsem, lpszSemName
    #Define ERROR_ALREADY_EXISTS 183
    Declare Integer GetLastError In win32API
    Declare Integer CreateSemaphore In WIN32API ;
      string @ lpSemaphoreAttributes, ;
      LONG lInitialCount, ;
      LONG lMaximumCount, ;
      string @ lpName
    hsem = CreateSemaphore(0,0,1,tcSemaphoreName)
    Return (hsem # 0 And GetLastError() == ERROR_ALREADY_EXISTS)
  Endproc
 
  Procedure CountSessions
    Local Array aOpenSessions[1]
    Select Count(*) From cnlog Where downtime Is Null Into Array aOpenSessions
    Return aOpenSessions
  ENDPROC
Enddefine
 
 
Define Class sysutil As Custom
 
  Procedure Init
    This.initDLLs()
  Endproc
 
  Procedure initDLLs
    Declare Integer WNetGetUser In win32api ;
      string @ lpszLocalName, ;
      string @ lpszUserName, ;
      integer @ lpcchBuffer
 
    Declare Integer GetComputerName In Win32API ;
      STRING @ lpComputerName, Integer @ nBufSize
 
    Declare Integer CoCreateGuid In 'OLE32.dll' ;
      string @pguid
    Declare Integer StringFromGUID2 In 'OLE32.dll' ;
      string rguid, String @lpsz, Integer cchMax
    Declare Integer UuidCreateSequential In 'RPCRT4.dllString @ Uuid
    Declare Integer UuidCreate In 'RPCRT4.dll' String @pguid
  Endproc
 
  Procedure getGUID
    Local pguid,rguid
    pguid=Replicate(Chr(0),16)
    rguid=Replicate(Chr(0),80)
    UuidCreate(@pguid)
    StringFromGUID2(pguid,@rguid,40)
    Return Strconv(Left(rguid,76),6)
  Endproc
 
  Procedure getMac
    Local pguid,rguid,lcOldError,lnResult
    pguid=Replicate(Chr(0),16)
    rguid=Replicate(Chr(0),80)
    lcOldError = On('error')
    On Error lnResult = CoCreateGuid(@pguid)
    UuidCreateSequential(@pguid)
    On Error &lcOldError
    StringFromGUID2(pguid,@rguid,40)
    Return Substr( Strconv(Left(rguid,76),6), 26,12)
  Endproc
 
  Procedure UserName
    Local lpszUserName,lpcchBuffer
    lpszUserName = Space(100)
    lpcchBuffer=100
    Return Iif( WNetGetUser(0,@lpszUserName,@lpcchBuffer)=0,;
      substr(lpszUserName,1,At(Chr(0),lpszUserName)-1),'' )
  Endproc
 
  Procedure ComputerName
    Local lcComputerName,lnBufSize
    Store Space(254) To lcComputerName
    lnBufSize = 254
    Return ;
      iif ( GetComputerName(@lcComputerName,@lnBufSize) # 0 ,;
      SUBSTR(m.lcComputerName,1,m.lnBufSize),'' )
  Endproc
Enddefine

Akilli biri bunu rahat gecer ama bu sadece baslangic. Onlar akillliysa biz daha akilliyiz, duz null datetime yerine tum kayit sifrelenmis xml filan olabilir.

6

Re: Uzak masa üstü bağlantısında kullanıcı sınırlaması

sağol hocam

7

Re: Uzak masa üstü bağlantısında kullanıcı sınırlaması

benim yıllardır kullandığım çok basit ve çok başarılı bir yöntem var:
5 kayıtlı bir tablo oluştur. giren kullanıcı sırayla ilk kayıttan itibaren 5 kayıttan birini kilitlemeye çalışsın. eğer başarırsa tamamdır yoksa çok fazla kullanıcı deyip dışarı atsın. programdan çıkmadığın sürece bu kaydın kilidini çözme. mesela eta-logo bu konuda bir field ın içeriğini değiştirir. ancak bilgisayarı düğmeden kapatınca düzeltme işlemi gerekir. benim yöntemde böyle birşey gereksiz.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

8

Re: Uzak masa üstü bağlantısında kullanıcı sınırlaması

etada ki o meşhur kulsay onun içinmiş demek. yıllarca kullsay ı çok anlamsız bulmuştum