2010-10-13 22 views
6

Visual Studio'da bir program oluşturdum. Program bir program oluşturur ve program çalışırken yazılır. Bu nedenle, hangi kullanıcının programla çalıştığı dikkate alınmaksızın, program-klasörüm için yazma izinlerini ayarlayan bir yükleyici (kurulum-proje) oluşturdum. “Domäne konnte nicht hergestellt werden vertrauenswürdigen Vertrauensstellung zwischen der primären Domäne und der Die.”Program klasörüm için tüm kullanıcılar için yazma izinlerini ayarla

[yaptı: "Ben System.SystemException olsun son iki sıra içinde

// ... 
} 
    InitializeComponent(); 

    string folder = Directory.GetCurrentDirectory(); 

    DirectorySecurity ds = Directory.GetAccessControl(folder); 
    ds.AddAccessRule(new FileSystemAccessRule("Everyone", //Everyone is important 
                //because rights for all users! 
    FileSystemRights.Read | FileSystemRights.Write, AccessControlType.Allow)); 
} 
// ... 

: anda böyle görünüyor birincil etki alanı ile güvenli etki alanı arasındaki güven ilişkisi kurulamadı "]

StackTrace böyle okur.

bei System.Security.Principal.NTAccount.TranslateToSids(IdentityReferenceCollection sourceAccounts, Boolean& someFailed) 
bei System.Security.Principal.NTAccount.Translate(IdentityReferenceCollection sourceAccounts, Type targetType, Boolean& someFailed) 
bei System.Security.Principal.NTAccount.Translate(IdentityReferenceCollection sourceAccounts, Type targetType, Boolean forceSuccess) 
bei System.Security.Principal.NTAccount.Translate(Type targetType) 
bei System.Security.AccessControl.CommonObjectSecurity.ModifyAccess(AccessControlModification modification, AccessRule rule, Boolean& modified) 
bei System.Security.AccessControl.CommonObjectSecurity.AddAccessRule(AccessRule rule) 
bei System.Security.AccessControl.FileSystemSecurity.AddAccessRule(FileSystemAccessRule rule) 

Ne yapabileceğimi biliyor musunuz? teşekkürler

+4

Yükleyicinizi yönetici ayrıcalıklarıyla yürütdünüz mü? – Dennis

+3

Belirli bir sistemdeki çeşitli genel klasörler için program verilerinin saklanmasının bir nedeni olduğunu unutmayın. – NotMe

+0

Oh, yükleyiciyi yönetici ayrıcalıklarına sahip varsayılan bir ayardır. Bunu nerede arayabilirim? Kurulum projemin özelliklerinde bunu bulamıyorum. – Rotaney

cevap

3

Belki de en iyi cevap sizin için sorduğunuz şey değil. Program dosyaları dizinine yazmamak için iyi bir neden var. Kayıt verileri özellikle geçicidir ve burada yazılmamalıdır.

TEMP ortam değişkeni tarafından belirtilen dizine günlük verileri yazmak çok daha iyi bir fikirdir. Bunu yaparsanız, kullanıcılarınıza birkaç sorun yaşatırsınız ve gelecekte yazılımınızı lanetlemelerini önlersiniz.

Allow access permission to write in Program Files of Windows 7

0

Bu previously asked question doğru yönde işaret etmelidir: Aynı konuyu kapsayan bu cevabı kontrol edin. Temel olarak, değil Program Files klasörüne yazma herhangi bir kullanıcı istiyorsunuz. UAC, güvenliği ve diğer önlemleri mümkün olduğu kadar denemek ve önlemek için vardır.

Esasen, eğer tüm kullanıcılar tarafından yazılacak olan tek bir dosya istiyorsanız, klasöründe %ALLUSERSPROFILE% klasöründen erişilebilir, bireysel kullanıcıların geçici klasöründen değil, kesinlikle istediğiniz bir günlük dosyası ile yapmak. Geçici klasörün içeriğinin uçucu olduğu düşünülmeli ve Disk Temizleme Sihirbazı gibi herhangi bir zamanda silinebilir.

3

Erişim denetimini gerçekten dizine ayarladığınız deyimi kaçırmıyor musunuz?

Directory.SetAccessControl(Directory.GetCurrentDirectory(), ds); 
İlgili konular