近期在程序的修改测试过程中,发现一个问题:在Win7操作系统环境下,即便把域用户加入了管理员组,可是域用户对于C盘的访问权限依然不同于administrator,尤其在program Files目录下没有权限进行改写,我们的产品也安装在此目录中,但是在用户界面内,我们要提供产品安装目录下用户库的修改功能,原有的代码如下:
ShellExecute(NULL,L"open",L"NOTEPAD.EXE",strCmd,NULL,SW_SHOWNORMAL);
打开用记事本打开strCmd指定的目录下的文件。
用此调用方式可以实现打开,也可以修改,可是保存的时候提示没有权限,刚开始以为文件设置了只读,或者其他问题,结果后来逐步排查发现是因为Win7系统下,域用户对C盘没有足够的操作权限导致。因此想使用管理员方式来打开记事本,应该就可以解决此问题。
经过一番查资料,试验,最终的修改很简单,将上述语句改成如下,就解决了问题。
ShellExecute(NULL,L"runas",L"NOTEPAD.EXE",strCmd,NULL,SW_SHOWNORMAL);