Как получить путь к папке Program Files на x64 винде?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Как получить путь к папке Program Files на x64 винде?

Сообщение Pantalone » 21.04.2016 (Чт) 22:40

SHGetSpecialFolderPath через
CSIDL_PROGRAM_FILES
CSIDL_PROGRAM_FILESX86
возвращает всегда C:\Program Files (x86), а мне надо еще C:\Program Files
Это нужно для предупреждения пользователя, чтобы выбирая системную папку не натворил там делов. По идее система сама не даст файлы в системных папках колупать программно, но мало ли проскочит как-то, надо пользователя предупредить.

Насколько надежно получать эти пути из реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion или через Environ?
Через api как-то привычнее и надежнее, но если без api эти два способа пойдут или не всегда?

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Как получить путь к папке Program Files на x64 винде?

Сообщение ger_kar » 22.04.2016 (Пт) 7:56

Я думаю, что разницы каким способом получать путь к этой папке нет, в конечном итоге хранилище то одно - реестр и получение пути любым из способов в конечном итоге будет брать этот путь из реестра.
Бороться и искать, найти и перепрятать

Admiralisimys
Постоялец
Постоялец
 
Сообщения: 318
Зарегистрирован: 01.06.2009 (Пн) 10:26

Re: Как получить путь к папке Program Files на x64 винде?

Сообщение Admiralisimys » 22.04.2016 (Пт) 10:08

Pantalone если винда Vista и выше то ничего страшного при записи не произойдёт, файл просто запишется в %USERPROFILE%\AppData\Local\VirtualStore\Program Files либо %USERPROFILE%\AppData\Local\VirtualStore\Program Files (x86)
I saved some files into the Program Files directory, and now they’re gone!
Конечно если запускать не от имени админа, и не выключить UAC.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 25.04.2016 (Пн) 16:56

Pantalone писал(а):возвращает всегда C:\Program Files (x86), а мне надо еще C:\Program Files

Зачем надо? Если бы твоя программа была 64-битной, она смогла бы получить верную папку.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Re:

Сообщение Pantalone » 25.04.2016 (Пн) 17:07

Qwertiy писал(а):
Pantalone писал(а):возвращает всегда C:\Program Files (x86), а мне надо еще C:\Program Files

Зачем надо? Если бы твоя программа была 64-битной, она смогла бы получить верную папку.

Программа массово редактирует файлы в папках. Надо пользователя постращать, чтобы случайно на системный диск не залез "попробовать".
В итоге сделал получение пути через реестр.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 39

    TopList