Как вызвать Win32 API с повышенными привилегиями в Windows 7 - PullRequest
0 голосов
/ 02 декабря 2010

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

Могу ли я что-нибудь сделать в коде, чтобы всегда вызывать эту функцию с повышенными привилегиями?

Ответы [ 3 ]

2 голосов
/ 02 декабря 2010

Вы можете использовать вызов API ShellExecute для запуска исполняемого файла с повышенными привилегиями.

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

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

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

1 голос
/ 02 декабря 2010

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

Если вы хотите сделать что-то подобное, вам придется запускать программу с повышенными правами. В Vista и Win7 это требует запуска в качестве службы или запланированной задачи. Которые требуют администратора для установки. UAC предоставляет способ получения прав администратора для обычных программ, вы должны включить манифест в вашу программу, чтобы пользователь был уведомлен о повышении ваших привилегий. Google 'requireadministrator', возьмите первый удар.

0 голосов
/ 02 декабря 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...