Зміст файлу різний залежно від запуску IDE "як адміністратора" чи ні?


2

У Windows 7 за допомогою Провідника Windows я зберегла резервну копію файлу C: \ Program Files \ Microsoft Visual Studio \ VC98 \ ATL \ Include \ ATLCOM.H, перейменувавши його із шляху, а потім скопіювала нову, трохи інший файл на місце (як ATLCOM.H у тому самому каталозі).

Потім я відкрив Microsoft Visual C ++ 6.0 IDE і склав свій проект (який спирається на ATLCOM.H). Я помітив, що компільований виконуваний файл поводився так, ніби я не вніс своїх змін.

Тож (щоб двічі перевірити, чи я насправді внесли зміни чи ні), я відкрив файл із IDE. Мої зміни НЕ були присутні. Але якщо я відкрив файл в якомусь іншому редакторі, то зміни є. Загалом я спробував відкрити файл із чотирма окремими програмами; за винятком VC ++ 6.0, мої зміни є при відкритті файлу у всіх них. Більше того, якщо я вношу ще одну зміну до файлу з VC ++ 6.0 і зберігаю її, вміст файлу, здавалося б, не впливає при перегляді з боку інших програм, але якщо я закрию VC ++ 6.0 і повторно відкриваю його, я змінив зміни всередині VC ++ 6.0 все ще є. Тому його десь записують на диск.

Тоді я виявив, що якщо я запускаю VC ++ 6.0 через "Запустити як адміністратор", вміст файлу виглядає (зсередини VC ++ 6,0) таким же, як і у інших програм. Якщо я запускаю його без "як адміністратора", вони відрізняються.

Я здогадуюсь, що, можливо, щось відбувається, як Windows (або сама IDE), об'єднуючи два окремих "справжніх" каталогів в один віртуальний каталог? Аналогічно тому, як Windows може об'єднати "C: \ Користувачі \ Громадські \ Документи" та "C: \ Користувачі \ Боб \ Документи" у те, що з точки зору користувача виглядає як єдиний каталог? І як саме це злиття залежить від того, я запускаю IDE як адміністратор чи ні?

Хтось знає, що тут відбувається? Чи є деякі каталоги, до яких я можу отримати доступ через провідник Windows (або підказку оболонки чи будь-яку іншу), яка дозволить мені реально побачити два фактичні файли, а не просто наче об’єднані C: \ Program Files \ Microsoft Visual Studio \ VC98 \ ATL \ Включити? Заздалегідь спасибі.


Схоже, віртуальний магазин знову вдарив (як відповів Уес Сайед)! Я розумію, чому Microsoft створила цю функцію, але вона, безумовно, може спричинити деякі дійсно заплутані проблеми.
lzam

Відповіді:


4

Ваша проблема полягає в тому, що ви використовуєте Visual C ++ 6.0. Ця версія MSVC є давньою. Ви, ймовірно, зіткнулися з проблемою з функцією Virtual Store, присутньою в Windows Vista.

Ось що відбувається:

Програма, ймовірно, намагається зберегти дані у власній папці під програмними файлами замість папки вашого профілю користувача. У Windows 7 записи в папку Program Files мовчки та прозоро переспрямовуються на папку Virtual Store у каталозі профілю вашого користувача. Коли ви вибрали Запустити як адміністратор, запис у програму файлів успішно, і перенаправлення не відбувається.

Перевірте наступне:

Подивіться під C: \ Users \\ AppData \ Local \ VirtualStore. Ви бачите під цим папку WINDOWS та Program Files? Якщо так, чи є файли, що стосуються VC6.0? Якщо так, то це з вами відбувається.

Вашим єдиним рішенням буде або завжди працювати як адміністратор, або ніколи не працювати як адміністратор, щоб поведінка завжди відповідала. Ви також можете відключити функцію VirtualStore у локальному редакторі групової політики (вона більше не відключається, коли вимкніть UAC так, як це було зроблено в Windows Vista).

Крім того, ви можете оновити до нової версії Visual C ++ (що я настійно рекомендую, тому що, як я вже сказав, 6.0 є давнім).


вчора мене це змусило з розуму, дивовижна функція від M $
Lluís
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.