【发布时间】:2010-09-29 15:35:33
【问题描述】:
只是尝试使用 CopyFile() 函数将文件从当前目录复制到 C:\windows\system32\drivers。
我还编写了清单,其中包含“requestedExecutionLevel level="highestAvailable"”,然后我运行 mt 将其添加到生成的可执行文件中。
当我尝试运行它时,弹出 Windows 7 UAC 对话框,我按“是”,但 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");
【问题讨论】:
-
您是否要覆盖 TrustedInstaller 拥有的 MS 文件?或者正在使用的东西?
-
不,我正在写一个以前不存在的文件
-
既然你说你看到了 UAC 对话框,关于你的清单是否正确或正确附加的答案是错误的。你正在提升。
-
凯特,为什么 CopyFile 失败了?
-
GetLastError() 返回什么?