Program files yazma izni
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Program files yazma izni
Merhaba
windows 7 Program files içinde olan (C:\Program Files\Test\database.db) databaseye Program Files yazma yetkisi olmadığından
kayıt sırasında (database is locked) hatası veriyor yetkileri amdin olarak değiştidiğimde sorun olmuyor fakat her programı yükleyene durumu anlatamazsın
bunu nasıl çöze bilirim acaba...
windows 7 Program files içinde olan (C:\Program Files\Test\database.db) databaseye Program Files yazma yetkisi olmadığından
kayıt sırasında (database is locked) hatası veriyor yetkileri amdin olarak değiştidiğimde sorun olmuyor fakat her programı yükleyene durumu anlatamazsın
bunu nasıl çöze bilirim acaba...
Re: Program files yazma izni
Merhaba,
Veritabanını kullanıcının yazma yetkisi olan bir yere koymanız lazım. Bu iş için windows'un belirlediği klasörler var. Users klasörü altındaydı sanırım ama dökümanlara bakmak lazım...
Kolay gelsin.
Veritabanını kullanıcının yazma yetkisi olan bir yere koymanız lazım. Bu iş için windows'un belirlediği klasörler var. Users klasörü altındaydı sanırım ama dökümanlara bakmak lazım...
Kolay gelsin.
Re: Program files yazma izni
Merhaba;
C:\Program Files\Test\ klasörünün özelliklerini açtığınızda Güvenlik Sekmesini göreceksiniz. "İzinleri Değiştirmek için, Düzenleyi Tıklayın " yazısının karşısında bulunan "Düzenle" Butonuna tıklayın. Gelen ekranda Grup yada kullanıc Adları bölümünden İşlem yapmak istediğiniz kulllanıcıyı seçin daha sonra "Users İçin İzinler " Bölümünde Tam Denetim, Değiştirme Alanlarını göreceksiniz bunları işaretleyip Tamam diyelim. bunun ardından tekrar deneyin bakalım sorun devam ediyormu.
Kolay Gelsin.
C:\Program Files\Test\ klasörünün özelliklerini açtığınızda Güvenlik Sekmesini göreceksiniz. "İzinleri Değiştirmek için, Düzenleyi Tıklayın " yazısının karşısında bulunan "Düzenle" Butonuna tıklayın. Gelen ekranda Grup yada kullanıc Adları bölümünden İşlem yapmak istediğiniz kulllanıcıyı seçin daha sonra "Users İçin İzinler " Bölümünde Tam Denetim, Değiştirme Alanlarını göreceksiniz bunları işaretleyip Tamam diyelim. bunun ardından tekrar deneyin bakalım sorun devam ediyormu.
Kolay Gelsin.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Re: Program files yazma izni
xozcanx yazdı:Merhaba;
C:\Program Files\Test\ klasörünün özelliklerini açtığınızda Güvenlik Sekmesini göreceksiniz. "İzinleri Değiştirmek için, Düzenleyi Tıklayın " yazısının karşısında bulunan "Düzenle" Butonuna tıklayın. Gelen ekranda Grup yada kullanıc Adları bölümünden İşlem yapmak istediğiniz kulllanıcıyı seçin daha sonra "Users İçin İzinler " Bölümünde Tam Denetim, Değiştirme Alanlarını göreceksiniz bunları işaretleyip Tamam diyelim. bunun ardından tekrar deneyin bakalım sorun devam ediyormu.
Kolay Gelsin.
Selam sorunu kendi bilgisayarımda kısmen çözdüm fakat programı başka bilgisayara yüklediğimde aynı sorun o bilgisayarda da ortaya çıktı bu durum nasıl çöze bilirim?
Re: Program files yazma izni
Tahminimce kurulum yaptığınız makineler bir etki alanı altında çalışıyor ve c altına dosya yazma izinleri kapatılmıştır. Her makineye ayrı veritabanı kurmuyorsanız ve diğer makinelerinde bu veritabanına yazma işlemini yapabilmelerini istiyorsanız şunu yapın Yine aynı ekranda "Düzenle" Butonuna tıkladıktan sonra Ekle Butonu vardır. burada Gelişmiş Butonuna tıklayın pencere genişleyecektir, daha sonra şimdi bul butonuna tıklayın kullanıcılar listelenecektir. Buradan Everyone kullanıcısını seçin Tamam dedikten sonra Bu kullanıcı içinde Tam denedim ve Değiştirme alanlarını işaretlerseniz tüm kullanıcılar bu klasöre erişebilecetir. Hem okuma hem yazma tam denetim yetkisi bulunacaktır.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Re: Program files yazma izni
xozcanx yazdı:Tahminimce kurulum yaptığınız makineler bir etki alanı altında çalışıyor ve c altına dosya yazma izinleri kapatılmıştır. Her makineye ayrı veritabanı kurmuyorsanız ve diğer makinelerinde bu veritabanına yazma işlemini yapabilmelerini istiyorsanız şunu yapın Yine aynı ekranda "Düzenle" Butonuna tıkladıktan sonra Ekle Butonu vardır. burada Gelişmiş Butonuna tıklayın pencere genişleyecektir, daha sonra şimdi bul butonuna tıklayın kullanıcılar listelenecektir. Buradan Everyone kullanıcısını seçin Tamam dedikten sonra Bu kullanıcı içinde Tam denedim ve Değiştirme alanlarını işaretlerseniz tüm kullanıcılar bu klasöre erişebilecetir. Hem okuma hem yazma tam denetim yetkisi bulunacaktır.
Teşekkür ederim bilgilendirme için,
Programı ben kuruyorsam sorun yok yetkileri değiştiririm ve kullanıcı sorun yaşamaz tanımadığım bir kişi programı kurmak istediğinde ne olacak adam programı kurdu (database is locked) diye uyarı verdi adam bu sefer programı kurmaktan
vaz geçer bu durumu kodlama tarafında çözmem gerek...
Re: Program files yazma izni
Rasyonel çözüm önerilmiş zaten.
Bunda da tek handikap All Users altında olmalı. Aktif kullanıcı altına koyarsanız aynı bilgisayarda oturum açacak başka kullanıcı erişemez. Buna uygun tek yer All Users altıdır.
.
+1mussimsek yazdı:Merhaba,
Veritabanını kullanıcının yazma yetkisi olan bir yere koymanız lazım. Bu iş için windows'un belirlediği klasörler var. Users klasörü altındaydı sanırım ama dökümanlara bakmak lazım...
Kolay gelsin.
Bunda da tek handikap All Users altında olmalı. Aktif kullanıcı altına koyarsanız aynı bilgisayarda oturum açacak başka kullanıcı erişemez. Buna uygun tek yer All Users altıdır.
.
Re: Program files yazma izni
Anlayamadığım şey sizin kodlamanızı kullandığımda SQLQuery ve SQLConnection bir birine bağlamayıp manuel olarak yaptığımda (C:\Program Files\Test\database.db) databaseye kayıt sırasında sorun olmuyor damrmarman yazdı:Rasyonel çözüm önerilmiş zaten.
+1mussimsek yazdı:Merhaba,
Veritabanını kullanıcının yazma yetkisi olan bir yere koymanız lazım. Bu iş için windows'un belirlediği klasörler var. Users klasörü altındaydı sanırım ama dökümanlara bakmak lazım...
Kolay gelsin.
Bunda da tek handikap All Users altında olmalı. Aktif kullanıcı altına koyarsanız aynı bilgisayarda oturum açacak başka kullanıcı erişemez. Buna uygun tek yer All Users altıdır.
.
SQLQuery ve SQLConnection bir birine bağladığımda ise neden (database is locked) hatası veriyor... Umarım anlata bilmişimdir

procedure TForm1.Button1Click(Sender: TObject);
begin
with SQLQuery1 do
begin
Close;
SQL.Clear;
Sql.add('Insert Into USER (KULLANICIADI, KULLANICISIFRE)');
Sql.add(' Values (:Kadi, :KadiSif)');
ParamByName('Kadi').AsString:= Edit1.Text;
ParamByName('KadiSif').AsString:= Edit2.Text;
ExecSQL;
// SQL cümlemizi yollayalım...
ClientDataSet1.Active := False;
ClientDataSet1.CommandText := 'SELECT * FROM [USER]';
ClientDataSet1.Active := True;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
SQLConnection1.Connected := False;
SQLConnection1.Params.Values['Database'] := ExtractFilePath(Application.ExeName) + 'Database\MyDatabase.db';
try
SQLConnection1.Connected := True;
Statusbar1.Panels[1].Text := 'Database İle Bağlantı Sağlandı!';
ClientDataSet1.ProviderName := 'DataSetProvider1';
DataSetProvider1.DataSet := SQLQuery1;
DataSetProvider1.Options := [poAllowCommandText];
DBGrid1.DataSource := DataSource1;
DataSource1.DataSet := ClientDataSet1;
// SQL cümlemizi yollayalım...
ClientDataSet1.Active := False;
ClientDataSet1.CommandText := 'SELECT * FROM [USER]';
ClientDataSet1.Active := True;
except
Statusbar1.Panels[1].Text:= 'Hata Oluştu Lütfen Daha Sonra Tekrar Deneyiniz!';
end;
end;
-
- Üye
- Mesajlar: 216
- Kayıt: 10 Ara 2013 03:50
Re: Program files yazma izni
Neden ayrıca bir DataSet kullanıyorsun? SQLQuery'de bir datasettir.
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
begin
with SQLQuery1 do
begin
Active := False;
Sql.Text := 'Insert Into USER (KULLANICIADI, KULLANICISIFRE) Values (:Kadi, :KadiSif)';
ParamByName('Kadi').AsString:= Edit1.Text;
ParamByName('KadiSif').AsString:= Edit2.Text;
ExecSQL;
// SQL cümlemizi yollayalım...
Active := False;
Sql.Text := 'SELECT * FROM [USER]';
Active := True;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DBGrid1.DataSource := DataSource1;
DataSource1.DataSet := SQLQuery1;
SQLConnection1.Params.Values['Database'] := ExtractFilePath(Application.ExeName) + 'Database\MyDatabase.db';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
SQLConnection1.Connected := False;
try
SQLConnection1.Connected := True;
Statusbar1.Panels[1].Text := 'Database İle Bağlantı Sağlandı!';
// SQL cümlemizi yollayalım...
SQLQuery1.Active := False;
SQLQuery1.SQL.Text := 'SELECT * FROM [USER]';
SQLQuery1.Active := True;
except
Statusbar1.Panels[1].Text:= 'Hata Oluştu Lütfen Daha Sonra Tekrar Deneyiniz!';
end;
end;
Re: Program files yazma izni
program file yazma mecburiyetin varsa fikir olarak şunu önerebilirim. Basitçe bir bat dosyası oluştur, gerektiği anda delphi den bunu çağırarak gerekli ( bir sefere mahsus ilk kurulumda ve çalışmada ) klasöre gerekli izni vermesini sağlayabilrsin Örnek bat dosyaları internette mecvut.
Bu sadece son çare olarak fikirdir.
Kolay gelsin.
Bu sadece son çare olarak fikirdir.
Kolay gelsin.
Re: Program files yazma izni
mussimsek yazdı:Merhaba,
Veritabanını kullanıcının yazma yetkisi olan bir yere koymanız lazım. Bu iş için windows'un belirlediği klasörler var. Users klasörü altındaydı sanırım ama dökümanlara bakmak lazım...
Kolay gelsin.
(Database=C:\Users\A Plus\Database\MyDatabase.db) yap kesin olur
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Re: Program files yazma izni
Evet alternatifler verilmiş, belirtmiş olduğunuz problemi tüm makinalarda yaşayacağınızı zannetmiyorum doğrusu, yaşanırsa ya sistem yönetisici tarafından engellenmiştir Program Files üzerine dosya yazmak yada işletim sistemi zarar görmüştür(virüs vs).
Kolay gelsin.
Kolay gelsin.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Re: Program files yazma izni
xozcanx yazdı:Evet alternatifler verilmiş, belirtmiş olduğunuz problemi tüm makinalarda yaşayacağınızı zannetmiyorum doğrusu, yaşanırsa ya sistem yönetisici tarafından engellenmiştir Program Files üzerine dosya yazmak yada işletim sistemi zarar görmüştür(virüs vs).
Kolay gelsin.
Emeği gecen herkese teşekkür ederim, bu arada bilgisayara format atamanın da zamanı gelmişti, kullanıcıya uyarı vermesi amacıyla
begin
with SQLQuery1 do
try
Active := False;
Sql.Text := 'Insert Into USER (KULLANICIADI, KULLANICISIFRE) Values (:Kadi, :KadiSif)';
ParamByName('Kadi').AsString:= Edit1.Text;
ParamByName('KadiSif').AsString:= Edit2.Text;
ExecSQL;
except
Statusbar1.Panels[1].Text:= 'Hata Oluştu (C:\Program Files) klasörüne tam yetki veriniz!';
end;
end;
Gibi bir uyarı vererek kullanıcıya bilgilendirmeyi düşünüyorum....
Re: Program files yazma izni
ProgramFiles dışından erişim ilginizi çektiyse eğer...
SHGetFolderPath fonksiyonunu msdn de araştırdığınızda sistemdeki tüm yollara global erişimi sağlarsınız.
C++Builder ile aşağıdaki gibi kullanıyorum... Delphicesi size kalmış..
http://msdn.microsoft.com/en-us/library ... s.85).aspx
http://msdn.microsoft.com/en-us/library ... s.85).aspx
SHGetFolderPath fonksiyonunu msdn de araştırdığınızda sistemdeki tüm yollara global erişimi sağlarsınız.
C++Builder ile aşağıdaki gibi kullanıyorum... Delphicesi size kalmış..
http://msdn.microsoft.com/en-us/library ... s.85).aspx
http://msdn.microsoft.com/en-us/library ... s.85).aspx
Kod: Tümünü seç
void __fastcall TFrmAna::FormCreate(TObject *Sender)
{
TCHAR szPath[MAX_PATH];
if(SUCCEEDED(SHGetFolderPath(NULL,
CSIDL_COMMON_APPDATA|CSIDL_FLAG_CREATE,
NULL,
0,
szPath
))) {
gusAdres = String(szPath) + "\\istenenKlasorAdi\\";
}
......// gusAdres global UnicodeString tanımlı...
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...
Mustafa Kemal Atatürk...