Теперь, когда было предоставлено больше подробностей Второе обновление Дэвида Хеффернана является правильным решением.Я оставлю этот ответ здесь для других людей, которые найдут эту страницу с похожим вопросом, но его совет - то, что вам нужно сделать для этого особого случая.
Оригинальный ответ:
Папка system32 в 64-битной операционной системе Windows предназначена только для 64-битных dll и исполняемых файлов, sysWOW64 - для 32-битных версий.Это сделано для того, чтобы программы не ломались, ожидающие получения 32-битных DLL, и в итоге получат 64-битные DLL.Windows обнаруживает, что 32-разрядная программа пытается выполнить запись или чтение в папку System32, и перенаправляет ее в новую папку.Используйте его как есть, просто имейте в виду, что если кто-то перемещается в проводнике, ему нужно перейти в папку SysWOW64 для доступа к вашим файлам. Вот страница MSDN , посвященная написанию 32-битных приложений в 64-битных окнах.Ключевые части, на которые следует обратить внимание: Redirector для файловой системы и Registry Redirector
Существуют некоторые другие автоматические перенаправления с файлами и ключами реестра, о которых вам следует знать, есливы работаете на современных операционных системах.Это происходит из-за того, что люди, которые писали приложения с предположением, что у них так долго были привилегии администратора, Microsoft не хотела ломать все, когда взламывали кнут с привилегиями учетной записи с помощью Vista и выигрывали 7. См. Этот пост в блоге.
Также, чтобы отвезти домой точку Дэвида Хеффернана.Я бы положил деньги на то, что вы пытаетесь записать в папку System32, не должно идти туда.Пожалуйста, объясните больше, что вы пытаетесь сделать с этой папкой?Если вы просто хотите получить локальные данные компьютера, вы должны использовать Environment.GetFolderPath
string pathToMyDataFolder = Environment.GetFolderPath(Path.Combine(Environment.SpecialFolder.CommonApplicationData, MyAppFolderName));