Windows8 és VB6 - fantomkönyvtárak??

Windows8 és VB6 - fantomkönyvtárak??
2014-02-13T20:29:32+01:00
2014-02-14T08:37:59+01:00
2022-11-30T13:10:39+01:00
Warlimont
Windows 8.1 alatt akartam kipróbálni VB6 alatt régóta folyamatosan fejlesztett programunkat (igen, tudom, ezzel a Microsoft anno alaposan benne hagyott minket a matrixban, mást már más nyelven viszünk). Eddig nem volt gond, de most Win8 alatt váratlan problémába ütköztünk, gyanítom, hogy inkább a Windows8 a ludas.

Amíg nem nyúlunk hozzá, minden rendben fut. De ha a telepített programunkba (C:\Program Files (x86)\Mienk\...) kívülről másolunk be valamit (pl netről frissítjük havonta), vagy az adatbázis fő könyvtárat cseréljük (pl archivált könyvtárat hozunk vissza), vagy törlünk, a Windows8 mintha valami cache-ben megőrizné az eredeti könyvtárat, filet, és onnantól csak azt a láthatatlan fantomkönyvtárat/filet hajlandó használni.
A gyakorlatban ez úgy néz ki, hogy a Windowsban ha megváltoztatom a belső adatkönyvtár nevét, vagy akár le is törlöm, semmi gond, a program valahonnan látja és olvassa. Viszont így egy korábbi állapotban maradnak az érintett fileok, azokat nem lehet kicserélni, nem lehet a tartalmukat változtatni, mert innentől csak a fantom jön, úgy ahogy az a létrejövetelekor kinézett. 
A vicc az, hogy a VB6 programunkban lévő filekereső funkció látja a letörölt mappákat (Data és Datax a képen)

Kép Program

de a Windows intézőjében ezek nem szerepelnek:

Kép WindowsA jelenség borzasztó zavaró. Több gépen is jelentkezik, nem egyedi. Újraindítás, Cleaner-es törlés nem segít rajta, sőt a fantomkönyvtár a program törlését és újratelepítését is túléli. File-mappa kereső nem mutatja, hogy hol lenne, de valami cache-be a Windows8 nyilván csinál másolatokat, gondolom, valami túlreagált biztonsági okból. Smart Screen és UAC kikapcsolása nem befolyásolja.
Korábbi Windows verziók egyikében sem volt ilyen.
A gép, amin legutóbb néztem, egy új vásárlású Lenovo laptop, lényegében szűz Windows 8 rajta, amire lejöttek az aktuális frissítések és 8.1 lett.

Találkozott már valaki ilyen problémával? Van erre valami megoldás??
Minden segítséget előre is köszönök!!!
Mutasd a teljes hozzászólást!
Csatolt állomány
A dolog neve UAC virtualizáció, és már a Vista óta megvan, nem a 8.1 hozta be. Itt van egy részletesebb leírás róla, és egyéb UAC-vel kapcsolatos dolgokról.

A célja nem biztonsági, hanem kompatibilitási: egyes XP-re vagy korábbi Windowsra írt programok mindenféle szívbaj nélkül firkáltak a Program Files, Windows és egyéb rendszerkönyvtárakba, amire elvileg csak adminnak van joga, de ez senkit nem érdekelt, mert XP-t úgyis mindenki csak adminként használt. Azért, hogy ezek a programok ne haljanak meg teljesen Vista alatt, ahol az admin usernek is csak akkor van admin joga, ha külön kéri, a Windows csendben átirányítja a rendszerkönyvtárakba való írásokat egy felhasználói könyvtárba, és a későbbi olvasásokkor ezek a fájlok is a rendszerkönyvtárban látszanak majd a régi program számára.

A megoldás az, hogy először is letörlöd a virtualizált Program Files könyvtárat a felhasználó könyvtárából (az elérési út ott van a linkelt cikkben), hogy ne keveredjenek bele ezek a fájlok az igazi Program Files tartalmába. A második lépés pedig az, hogy amikor később tényleg a Program Files könyvtárba szükséges írni, az mindig admin jogokkal futó processzből történjen. Megoldás lehet még az UAC teljes kikapcsolása és a számítógép admin jogokkal történő használata, de ez a lehető legrosszabb lehetőség a probléma kiküszöbölésére.
Mutasd a teljes hozzászólást!

  • Köszönöm, megnézem! 

    Nem akadékoskodni akarok, de ha ez már a Vista óta volt, akkor a Vistában és főleg sűrűn használt Windows7-ben miért nem jött ez elő soha...?
    Mutasd a teljes hozzászólást!
  • A tipp szuper, ott van a "fantomkönyvtár", ahol írja a link.
    Kérdés, hogy miként lehet ezt leállítani. A Win8 (nem Pro) kiadásokban nincs policy editor..... :(
    Mutasd a teljes hozzászólást!
  • Sajna mindkét kérdésedet passzolnom kell. Nem használtam Win8-at még, nem tudom, mi változott az UAC beállításaiban, és hogy lehet kikapcsolni. Ha magába a program futtatható állományába raktok egy manifest fájlt, amivel jelzi, hogy ő UAC-kompatibilis, akkor a program szintjén kikapcsolható a virtualizáció, de ettől még mezei felhasználó nevében továbbra se lesz joga a Program Files-ba firkálni, úgyhogy ha ezen múlik a program helyes működése, akkor baj van.
    Mutasd a teljes hozzászólást!
  • Nem lehetne inkább a programot hozzáigazítani a mai követelményekhez (újraírás nélkül)?

    Az az ajánlás, hogy ne a Program Files-ba mentsen a program adatokat, hanem az erre a célra létrehozott, felhasználói joggal is írható AppData-ba vagy LocalAppData-ba, nem most született, hanem kb. az XP idején vagy még régebben (tehát 10-15 éve).

    Az alábbi környezeti változók tartalmazzák ezeket (egyik roaming, hálózati környezetre, másik local):

    echo %appdata% echo %localappdata%

    A programnak ide kéne írogatnia az adatbázisát, beállításait stb., nem a program könyvtárába, a frissítéshez meg akár lehet egy új programot írni, amely támogatja a Win 8-at. Így működnie kéne, újraírás nélkül.

    Ezen az oldalon valaki készített egy modult, amellyel elvileg IDE-ből el lehet érni ezeket a különleges foldereket, viszont célszerű alaposan tesztelni (nekem erre nincs lehetőségem).
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd