读书人

Vista或win7下有没有办法让dll文件默

发布时间: 2012-02-02 23:57:14 作者: rapoo

Vista或win7下,有没有办法让dll文件默认以管理员的身份运行?
我的dll文件是通过regsvr32.exe注册后运行的,注册调用的语句是:
ShellExecute(Application->Handle, TEXT("Open"), "regsvr32.exe",("/s "+FileName3).c_str(),FilePath.c_str(),SW_HIDE);
其中FileName3就是dll的文件名。但这样调用,不是以管理员的身份运行的,一些写权限受到了限制,比如,这句拷贝文件的操作都不能运行:
CopyFile(TempPathFile,FileName,false);
其中TempPathFile是临时文件夹下的一个临时文件,FileName是程序安装目录下的一个dat文件。
exe文件我知道如何让它默认以管理员身份运行,dll文件就不知道了,期待高手解答。顶帖者有分。


[解决办法]
DLL本身就不能单独运行,本身无所谓权限的问题,它的特权等级和宿主程序是一样的,
你让它的宿主程序以管理员身份运行就行了。

具体地说ShellExecute是在哪个程序中执行的,你就让这个程序以管理员身份运行,
或者哪个程序需要加载这个DLL,就让这个程序以管理员身份运行。
[解决办法]

[解决办法]
之前我也在做类似的工作,直接在当前目录下加一个Mainfest文件,里面是如下的内容
<?xml version="1.0" encoding="utf-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
在运行的时候就是管理员权限了
[解决办法]
用runas试试
runas可以在命令行下以其它用户身份运行某一程序(包括以管理员身份),具体使用看一下
runas /?

读书人网 >C++ Builder

热点推荐