Application.ExecutablePath   zodpovězená otázka

C#, VB.NET

Potřebuji zjistit cestu k spustitelnému souboru aplikace. K tomu jsem chtěl využít vlastnost Application.ExecutablePath. Na jednom ze dvou počítačů na kterých jsem aplikaci zkoušel, však obsahovala nesprávnou cestu, v níž byly místo znaků s diakritikou čtverečky. Je zajímavé, že vlastnost Application.StartupPath obsahovala cestu správnou i s diakritikou (ovšem bez jména exe souboru). Na druhém počítači se problém nevyskytuje. V čem může být chyba?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkuste použít toto:

Dim path As String = System.Reflection.Assembly.GetExecutingAssembly.Location

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

V názvech složek a souborů bych raději diakritiku nepoužíval.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To je sice hezké, ale právě metoda Application.ExecutablePath tohleto dělá.

Vtipné pak je, když v rámci lokalizace Windows XP přeložili i názvy některých složek (např. C:\Documents and Settings\uživatel\Data Aplikací, kde nám dělá problém jednak uživatelské jméno, pokud obsahuje znaky s diakritikou, což je možné, a hlavně pak složka Data Aplikací).

Jednou se diakritika v názvech povolila, tak ji musí aplikace bez problémů zvládat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Z běžného pohledu Application.ExecutablePath a Assembly.Location dělají to samé, ovšem implementovány jsou jinak (ExecutablePath volá API funkci GetModuleFileName a Location je implementována interně) tudíž je možné, že s Assembly.Location by nemusely nastávat výše uvedené problémy, ovšem netestoval jsem to.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback