2010-10-15 2 views
0

Мне нужно написать ярлык в папке автоматического запуска для всех пользователей.с программным обеспечением получения специального разрешения на запись в папку с использованием управления доступом пользователей в Windows 7 и Vista

Сценария является то, что пользователь с правами администратора, через диалог конфигурации приложения, должен быть в состоянии установить приложение для автоматического запуска для всех обычных пользователей, когда они войти.

Я получаю папку автозагрузки используя

SHGetSpecialFolderPath(NULL, startFolderPath, CSIDL_COMMON_STARTUP, FALSE) 

, но тогда я не имею права на запись в этой папке, даже если вошедший пользователь является частью группы в администраторе в.

Предположим, мне нужно вызвать некоторую функцию API, связанную с управлением учетными записями пользователей (UAC), чтобы попросить зарегистрированного пользователя повысить текущую привилегию.

Это должно работать на Windows XP тоже

ответ

1

Когда вы говорите, что вы не имеете права на запись в папку, была приложение или инструмент, который вы использовали для записи выполняется с повышенными привилегиями? То есть, работает как администратор? Это не то же самое, что выполняется учетной записью, которая является администратором. Если нет, щелкните правой кнопкой мыши exe и выберите «Запуск от имени администратора». Это повысит приложение и, вероятно, позволит ему выполнить задачу настройки.

Это не связано с контролем доступа пользователей или доступом к кодам. Это UAC, который защищает HKLM, программные файлы и другие пользовательские настройки для каждой машины.

+0

Спасибо, я принял UAC за контроль доступа пользователей. Я исправлю его как Контроль учетных записей пользователей в моем первоначальном вопросе. – sergiom

+0

Я не хочу, чтобы мое приложение запускалось как администратор. Я просто хочу повысить привилегии только за короткий промежуток времени, необходимый для создания ярлыка. Я хочу показать окно UAC, чтобы попросить разрешения пользователя изменить защищенные настройки, например, программы установки. – sergiom

+0

Вот что я и говорю. Вещь, которая записывается в реестр, должна быть повышена. Если вы хотите, чтобы поднять, а остальные нет, поместите его в отдельный exe, поместите манифест на него с помощью requireAdministrator и используйте ShellExecute для его запуска. –