2010-12-02 2 views
0

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

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

ответ

1

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

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

2

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

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

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

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

+0

Нет указателя на возвышение, и я не хочу запускать исполняемый файл. Я хочу вызвать функцию API в режиме повышенной. – ProfK 2010-12-02 13:43:14

+0

Я думаю, что это невозможно, и вы можете только «переключиться» на повышенный контекст в рамках процесса. Я был удивлен, узнав, что когда мне нужно было работать с повышенным кодом. – Ran 2010-12-02 17:49:54

0

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

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