requiredExecutionLevel в файле манифеста и сбой функции CopyFile () - PullRequest
0 голосов
/ 29 сентября 2010

Просто пытаюсь скопировать файл с помощью функции CopyFile () из текущего каталога в C: \ windows \ system32 \ drivers.

Я также написал манифест с параметром "selectedExecutionLevel level =" highAvailable "иЯ запускаю mt, чтобы добавить его к получающемуся исполняемому файлу.

Когда я пытаюсь его запустить, появляется диалоговое окно UAC Windows 7, я нажимаю «Да», но CopyFile () возвращает ошибку «Отказано в доступе».Что случилось?Что я должен проверить?

Мой файл манифеста:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <v3:trustInfo xmlns:v3="urn:schemas-microsoft-com:asm.v3">
     <v3:security>
       <v3:requestedPrivileges>
         <v3:requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
       </v3:requestedPrivileges>
     </v3:security>
   </v3:trustInfo>
 </assembly>

Мой код C:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    if (CopyFile ("aaa.sys", "C:\\windows\\system32\\drivers", FALSE)==FALSE)
        ErrorExit ("CopyFile");

Ответы [ 2 ]

1 голос
/ 29 сентября 2010

Хм, не совсем уверен, что делает "самая высокая доступность". Удалите все сомнения и используйте вместо этого «requireAdministrator», который всегда работает для получения полных привилегий администратора. Также убедитесь, что вы используете правильное имя ресурса и идентификатор, RT_MANIFEST и 1.

0 голосов
/ 29 сентября 2010
  • requireAdministrator = Всегда требовать повышения прав администратора.
  • самое высокоеAvailable = Если член группы администраторов, повышаться.Если обычный пользователь, запускайте как обычный пользователь без повышения прав.
...