 |
操作系统: windows NT&2000
编程工具: vc++
问题: 您好!
我在生成一个程序中,调用了sys文件,在一超级用户登录时正常执行,在以普通身份登录时老是出错,说是一个sys文件不能加载.而我请教了一些朋友,他们说应该将该文件做为服务加入系统,我不知是否正确,如果正确的话,应该怎么加入呢?期盼专家给我一个答复!
水平: 中级(jjg)
|
 |
这里估计你说的.sys文件是一个Kernel驱动。如果用户以管理员登录,那么.sys文件放在任何目录中,都可以被程序调用。但是如果以非管理员登录,则.sys文件必须放在WinNT\System32\drivers目录中(其他类型的服务通常可以放在system32目录中)。你需要先以管理员登录到Windows NT/2000(普通用户没有建立服务的权利)。如果你有Windows NT/2000 Resouce Kit,你可以使用命令行工具sc.exe创建一个服务,它会自动修改注册表。如:
sc Create myservice BinPath= %%SystemRoot%%\System32\drivers\mydriver.sys DisplayName= "My Service" type= kernel start= auto error= ignore
然后重新启动系统,以后任何用户都可以调用该驱动了。注意,你的程序中不需要再调用CreateService之类的函数,只需要调用CreateFile就可以了。
如果没有Resouce Kit,你也可以手工修改注册表。如:
1、在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\下建立新键myservice。
2、在myservice下创建值
"Type"=dword:00000001
"Start"=dword:00000002
"ImagePath"="%%SystemRoot%%\System32\drivers\mydriver.sys"
"ErrorControl"=dword:00000001
"DisplayName"="NTPort Library Driver"
相关书籍:
《WINDOWS设备驱动程序技术内幕 》
《实用技术:WINDOWS NT与WINDOWS 2000设备驱动及开发》
此问题由李海回答。
附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, DDK与硬件设备, hardware, ddk, vtoolsd, driver studio, winrt。
|