2011-10-18 18 views
8

yapılandırma dosyasını bulamıyor C# ve Windows Forms bir ekran koruyucu yazdım. Test için tembel oldum ve tüm ayarlarım için config dosyasını kullandım (henüz hiçbir ayar iletişim kutusu yok), ancak pencereler ekran koruyucuyu çalıştırdığında program config dosyasını bulamıyor veya okuyor gibi görünüyor..Net Screensaver

Önizleme düğmesini kullandığımda veya el ile herhangi bir şekilde el ile çalıştırıldığında çalışır, yalnızca ekran koruyucu zaman aşımına uğradığında yalnızca yapılandırma dosyasını bulamadığı zaman çalışır.

Kısa adını döndürür o AppDomain.CurrentDomain.SetupInformation.ConfigurationFile log Having: C:\Windows\System32\MYSCRE~1.config o yüzden sorun kısa adı yolu ile yapılandırma dosyası bulamıyor olmasıdır tahmin ediyorum C:\Windows\System32\MyScreenSaverName.scr.Config

olması gereken yerde.

Windows 7'nin ekran koruyucular altında çalıştırdığı sistem hesabından veya nasıl çalıştığı hakkında başka bir şey olup olmadığından emin değil. Herhangi bir bilgi yardımcı olabilir, teşekkürler.

Düzenleme: herhangi bir fark bulmak için çalışıyorum: bulabilirim

  1. tek fark olduğunu Environment.CommandLine döner, Windows ben
  2. her şey seçeneğini çalıştırdığınızda ekran koruyucuyu çalıştırır, fakat normal yolu vardır C:\Windows\system32\MYSCRE~1.SCR /sProcess.GetCurrentProcess().StartInfo olduğu altında aynı
  3. WindowsIdentity.GetCurrent().Name hesabım adıdır

Diğer sorulara baktığımızda, Kullanıcı32 ekran koruyucuyu başlatan şey gibi görünüyor, bu yüzden bunun scr sürecini başlatan bir şey olması gerektiğini düşünüyorum.

Çevrede Çalışma Alanı: .scr dosyamın yeniden adlandırılması 8 karakterden daha azına sahip olması doğru çalışmasına izin verir. Şimdilik işe yarıyor, bu sorunun neden var olduğunu hala bilmek isterim.

+0

Aynı sorun yaşıyorum: FUTIL.EXE yardımcı olabilir ben de bu var biraz araştırma yapmak , orada bir meraklı "disable8dot3" seçeneği yoktur, kontrol edildi. Ama geçici çözüm benim için de çalışıyor ... – Jan

+2

Ekran koruyucular çalıştıran kod hala 8 karakter DOS/eski Windows sınırlama sahip olduğu için? C: \ Progra ~ \ gibi AppDomain'i çağırırsanız ve config dosyasını "a.config" olarak değiştirirseniz, dosyanın adını 8'den daha az olacak şekilde yeniden adlandırmadan çalışır. Gibi: AppDomain.CurrentDomain.SetData ("APP_CONFIG_FILE", "c: \\ this_is_a_long_config_file.config") Not: Bu bir yorum olarak değil, bir yanıt olarak ekledim nedeni budur. –

cevap

1

düzenleme: ouch ... 1 yaşında bir soru olduğunu çok geç fark ettim .... belki de birileri zaten bu usefull'u bulabilir.


Dosya sisteminin ntfs yerine fat/fat32 olmadığından emin misiniz?

Belki bir eski yağ/fat32 biçimlendirilmiş sistemden yükseltilmiş bir Win7 olabilir? (ve böylece fs yükseltilmedi)?

Belki de yanılmışım, kısa isimleri yerinde görmek benim tahminimdir. Son zamanlarda C# içinde bir ekran koruyucu projesi üzerinde çalıştım ve hiç sorunla karşılaşmadım ... Dürüst olmak için yaşlardan beri kısa isimler görmüyorum ...

Disk yönetiminden fs tipini görmelisiniz.

http://commandwindows.com/fsutil.htm