Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Ağ klasörüne bağlanma
#1
Arkadaşlar merhaba,
Muhtemelen çok basit ancak benim takıldığım bir sorunum var, ağ klasörüne bağlanıp dosya kopyalamak istiyorum, ancak ağ klasörü şifreliyse ve kullandığım bilgisayarın yetkisi yoksa ulaşamıyorum.


Baglan('\\192.168.0.13\klasor' , 'username','password')  şeklinde fonksiyon gibi bir şeyde olabilir.

yardımcı olabilecek var mıdır?
Cevapla
#2
(16-12-2020, Saat: 21:40)ermanispir@gmail.com Adlı Kullanıcıdan Alıntı: Arkadaşlar merhaba,
Muhtemelen çok basit ancak benim takıldığım bir sorunum var, ağ klasörüne bağlanıp dosya kopyalamak istiyorum, ancak ağ klasörü şifreliyse ve kullandığım bilgisayarın yetkisi yoksa ulaşamıyorum.


Baglan('\\192.168.0.13\klasor' , 'username','password')  şeklinde fonksiyon gibi bir şeyde olabilir.

yardımcı olabilecek var mıdır?

https://jonlennartaasenden.wordpress.com...h-by-code/
Cevapla
#3
@bibilen güzel bir kaynak sunmuş.

Arşivimden çalıştığım kurumda kullandığım basit şeklini de ben sunayım. Sistem tek zaten.


function MakeDriveMapping(DriveLetter: string; DirectoryPath: string;
  Username: string; Password: string; RestoreAtLogon: Boolean): DWORD;
var
  NetResource: TNetResource;
  dwFlags: DWORD;
begin
  with NetResource do
  begin
    dwType := RESOURCETYPE_DISK;
    lpLocalName := PChar(DriveLetter);
    lpRemoteName := PChar(DirectoryPath);
  lpProvider := nil;
  end;
  if (RestoreAtLogon) then
    dwFlags := CONNECT_UPDATE_PROFILE
  else
    dwFlags := 0;
  Result := WNetAddConnection2(NetResource, PChar(Password),
    PChar(Username), dwFlags);
end;



Bağlantı için bir network drive sürücü harfini vererek bağlanır. Button2'de de bunu devre dışı bırakmayı gösterdim. Dilerseniz her bilgisayar açıldığında bağlantıyı korusun/kalıcı olsun derseniz parametre olan FALSE kısmını TRUE yaparsınız. 

Temsili Kullanımı :

procedure TForm1.Button1Click(Sender: TObject);
begin
  if ( MakeDriveMapping('X:', '\\192.168.0.15\D', 'loginname', 'password', False) = 0 )
  then
    ShowMessage('OK')
  else
    ShowMessage('Error!');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if ( WNetCancelConnection2(PChar('X:'), 0, false) = 0 )
  then
    ShowMessage('OK')
  else
    ShowMessage('Error!');
end;

Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#4
(16-12-2020, Saat: 22:55)mrmarman Adlı Kullanıcıdan Alıntı: @bibilen güzel bir kaynak sunmuş.

Arşivimden çalıştığım kurumda kullandığım basit şeklini de ben sunayım. Sistem tek zaten.


function MakeDriveMapping(DriveLetter: string; DirectoryPath: string;
  Username: string; Password: string; RestoreAtLogon: Boolean): DWORD;
var
  NetResource: TNetResource;
  dwFlags: DWORD;
begin
  with NetResource do
  begin
    dwType := RESOURCETYPE_DISK;
    lpLocalName := PChar(DriveLetter);
    lpRemoteName := PChar(DirectoryPath);
  lpProvider := nil;
  end;
  if (RestoreAtLogon) then
    dwFlags := CONNECT_UPDATE_PROFILE
  else
    dwFlags := 0;
  Result := WNetAddConnection2(NetResource, PChar(Password),
    PChar(Username), dwFlags);
end;



Bağlantı için bir network drive sürücü harfini vererek bağlanır. Button2'de de bunu devre dışı bırakmayı gösterdim. Dilerseniz her bilgisayar açıldığında bağlantıyı korusun/kalıcı olsun derseniz parametre olan FALSE kısmını TRUE yaparsınız. 

Temsili Kullanımı :

procedure TForm1.Button1Click(Sender: TObject);
begin
  if ( MakeDriveMapping('X:', '\\192.168.0.15\D', 'loginname', 'password', False) = 0 )
  then
    ShowMessage('OK')
  else
    ShowMessage('Error!');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if ( WNetCancelConnection2(PChar('X:'), 0, false) = 0 )
  then
    ShowMessage('OK')
  else
    ShowMessage('Error!');
end;


Muharrem hocam öncelikle paylaşım için teşekkürler. Bu sizin gösterdiğiniz işlem komut satırında (CMD) Net Use komutu ile yaptığımızdan farksız. Delphi ortamında bu işlemin yapılması aydınlatıcı ve güzel bir bilgi. Peki Map Drive yapmadan bu işlemi yapmamız mümkün mü?

Yani şifreli bir paylaşım var ve bazı kullanıcılar erişebilir durumda fakat ben buraya özel bir şekilde uygulama vasıtasıyla erişim hakkı olmayan kullanıcılar için de uygulama ile bir dosyayı kendi Temp klasörüne kopyalayacak ve ön izleme yaptıracak.

Basit mantıkla Map tanımla işin bitince kapat yapılabilir. Fakat daha pratik bir yolu var mı bunu öğrenmek istedim.
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#5
@3ddark

Aşağıdaki kod ile 
rundll32.exe keymgr.dll, KRShowKeyMgr

ağ üzerinde nerelere geçici veya kalıcı olmak üzere, login bilgilerim ile bağlantı attığımı görebiliyorum. Buradan silmek de mümkün ama ben harf ataması ile kontrolün bende olmasını tercih ediyorum ve şiddetle öneriyorum, açık söyleyeyim.

* İşim bittiğinde bağlantıyı bu harf ataması anahtar olarak kullanarak kapattığımda tanımlı parola erişimi de otomatik olarak kapanıyor. 

* adı yoksa 
Net Use * /delete

ile her şeyi kaldırmak istemiyorum.

* Bu bana, büro tipi yerlerde aynı bilgisayardan sadece benim yazılımımın ulaşabileceği ağ yollarına kontrolsüz geçişi olumlu anlamda sınırlandırıyor. Bunu severek kullanıyorum.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#6
Tekrar merhaba.
Öncelikle değerli cevaplarınız için hepinize teşekkür ederim, Projemde onlarca klasöre aynı anda bağlantı yapacağımdan Map Drive çözümü benim için verimli bir çözüm olmayacak, Map drive yapmadan bunu çözebilmem gerekiyor ( Örn:goodsync) Bu programda da map drive yapmadan paylaşıma şifreli erişim yapılabiliyor. Buna benzer birşey yapmak istiyorum, Webde günlerdir arıyorum bu çözümü ancak bulamadım. Yardımcı olacaklara şimdiden teşekkür ederim.
Cevapla
#7
* İstediğiniz şekildeki örnek :
function ConnectNetoworkShare( DirectoryPath: string; Username: string; Password: string; RestoreAtLogon: Boolean): DWORD;
var
  NetResource: TNetResource;
  dwFlags: DWORD;
begin
  with NetResource do
  begin
    dwType          :=  RESOURCETYPE_DISK;
    lpLocalName     :=  0;
    lpRemoteName    :=  PChar(DirectoryPath);
    lpProvider      :=  nil;
  end;
  if (RestoreAtLogon) then
    dwFlags := CONNECT_UPDATE_PROFILE
  else
    dwFlags := 0;
  Result := WNetAddConnection2(NetResource, PChar(Password), PChar(Username), dwFlags);
end;

function DisConnectNetoworkShare( DirectoryPath: string; forceDisconnect: Boolean = false): DWORD;
begin
  Result := WNetCancelConnection2( PChar(DirectoryPath), 0, forceDisconnect);
end;

// Temsili Kullanımı 

procedure TForm1.Button1Click(Sender: TObject);
begin
  if ConnectNetoworkShare( '\\192.168.0.15\D', 'loginname', 'password', False ) = 0
  then
    ShowMessage('OK')
  else
    ShowMessage('Error!');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if DisConnectNetoworkShare( '\\192.168.0.15\D', True ) = 0
  then
    ShowMessage('OK')
  else
    ShowMessage('Error!');
end;


byt0kfnaohzkc9956xtu.gif
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#8
(17-12-2020, Saat: 09:24)mrmarman Adlı Kullanıcıdan Alıntı: * İstediğiniz şekildeki örnek :
function ConnectNetoworkShare( DirectoryPath: string; Username: string; Password: string; RestoreAtLogon: Boolean): DWORD;
var
  NetResource: TNetResource;
  dwFlags: DWORD;
begin
  with NetResource do
  begin
    dwType          :=  RESOURCETYPE_DISK;
    lpLocalName     :=  0;
    lpRemoteName    :=  PChar(DirectoryPath);
    lpProvider      :=  nil;
  end;
  if (RestoreAtLogon) then
    dwFlags := CONNECT_UPDATE_PROFILE
  else
    dwFlags := 0;
  Result := WNetAddConnection2(NetResource, PChar(Password), PChar(Username), dwFlags);
end;

function DisConnectNetoworkShare( DirectoryPath: string; forceDisconnect: Boolean = false): DWORD;
begin
  Result := WNetCancelConnection2( PChar(DirectoryPath), 0, forceDisconnect);
end;

// Temsili Kullanımı 

procedure TForm1.Button1Click(Sender: TObject);
begin
  if ConnectNetoworkShare( '\\192.168.0.15\D', 'loginname', 'password', False ) = 0
  then
    ShowMessage('OK')
  else
    ShowMessage('Error!');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if DisConnectNetoworkShare( '\\192.168.0.15\D', True ) = 0
  then
    ShowMessage('OK')
  else
    ShowMessage('Error!');
end;


byt0kfnaohzkc9956xtu.gif

Muharrem hocam, tam istediğim şey bu,  
Yardımınız için çok teşekkür eder saygılarımı sunarım.
Cevapla
#9
Muharrem abi teşekkür ederim... buna benzer bişey lazımdı...
Cevapla
#10
(16-12-2020, Saat: 21:40)ermanispir@gmail.com Adlı Kullanıcıdan Alıntı: Arkadaşlar merhaba,
Muhtemelen çok basit ancak benim takıldığım bir sorunum var, ağ klasörüne bağlanıp dosya kopyalamak istiyorum, ancak ağ klasörü şifreliyse ve kullandığım bilgisayarın yetkisi yoksa ulaşamıyorum.


Baglan('\\192.168.0.13\klasor' , 'username','password')  şeklinde fonksiyon gibi bir şeyde olabilir.

yardımcı olabilecek var mıdır?

Merhabalar,

Ağ klasörü için FTP kullanabilirsiniz. Sunucu üzerinde filezilla kurulup oradan hesap oluşturulup delphi  FTP componenti ile bağlanabilirsin.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Exclamation UniDac ile Mobil App Bağlanma Sorunu yemre 20 6.599 13-01-2023, Saat: 09:01
Son Yorum: shooterman
  Ip de paylaşımda olan yazıcıya bağlanma Fatih 3 1.218 20-12-2022, Saat: 07:34
Son Yorum: 3ddark
  Delphi ile NVİ KPS (Kimlik Paylaşım Sistemi) web servislerine bağlanma. csunguray 11 14.016 24-05-2019, Saat: 14:14
Son Yorum: sadettinpolat



Konuyu Okuyanlar: