如何安全地使用UAC提升IPC?
|
我程序的某些部分需要管理访问权限(影响所有用户的设置都存储在HKLM中,并且仅限于管理访问权限)。
我已更改软件以表明需要海拔:
作为响应,我将在提示提升权限时启动我的可执行文件:
SHELLEXECUTEINFO shExecInfo;
shExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
shExecInfo.fMask = NULL;
shExecInfo.hwnd = NULL;
shExecInfo.lpVerb = L\"runas\";
shExecInfo.lpFile = L\"myapp.exe\";
shExecInfo.lpParameters = NULL;
shExecInfo.lpDirectory = NULL;
shExecInfo.nShow = SW_MAXIMIZE;
shExecInfo.hInstApp = NULL;
ShellExecuteEx(&shExecInfo);
我要做的是在命令行上传递命名管道的名称,告诉自己它可以连接到哪里,以便获得有关它应该做什么的说明:
myapp.exe /uac 6C844671-E262-46DD-939E-47517F105FB6
(是的,使用GUID作为管道的名称)。
通过这个管道,我可以告诉我的高架克隆是哪个数据库,例如:
它应该连接到哪个服务器数据库
用户应该说做出了改变
它应该添加/编辑/删除的东西
那时我担心的是,任何人都可以启动myapp.exe
,然后满足各种请求的要求-我不希望这样做,因为我没有启动它,例如:
MaliciousProgram.exe:
ShellExecute(\"myapp.exe /uac HahaYouDoWhatISayNow\")
我记得在Longhorn测试版期间,有一个Channel9视频或一篇文章,谈论UAC以及进行IPC(进程间通信)错误的危险。
我不想重新发明轮子,犯一些已经解决的安全错误。但是我找不到有关使用UAC提升进行IPC的“正确”方法的任何现有指南。
他不接受IPC与产生的提升过程进行通信以进行临时提升动作的模式吗?
编辑:uac
和ipc
标签的跟随者:53
没有找到相关结果
已邀请:
1 个回复
浅镁