【技术】权限提升在程序设计中的重要性案例
来源:互联网 发布:在vmware安装ubuntu 编辑:程序博客网 时间:2024/06/10 16:58
我在设计一个文件索引、文件遍历搜索软件的时候,发现本来在VB6编辑环境下调试运行时,没有任何的报错,但是编译成exe文件后,执行到第68个文件的时候,就崩溃了。原因是什么?
为了查明原因,我在代码中加上了debug.print输出了出问题时正在枚举的文件夹。发现它是系统文件夹。这个时候我才意识到可能是权限的问题。
我回忆起曾经写过强制关机程序的时候需要使用一个提权系统函数,于是就想,既然VB6编辑环境可以运行,说明它的权限高一些,如果我使用函数提升权限后,就有可能可以不出错。
Public Declare Function RtlAdjustPrivilege Lib "ntdll.dll" ( _
ByVal Privilege As String, _
ByVal bEnable As Long, _
ByVal bCurrentThread As Long, _
ByRef bEnabled As Long) As Long
Public Const SE_DEBUG_PRIVILEGE As Long = 20
在程序的Load中执行:
Call RtlAdjustPrivilege(SE_DEBUG_PRIVILEGE, 0, 0, i) 'i为随便的一个整形变量
然后一些需要一定权限的操作就都可以进行了。比如说枚举系统文件。
为了查明原因,我在代码中加上了debug.print输出了出问题时正在枚举的文件夹。发现它是系统文件夹。这个时候我才意识到可能是权限的问题。
我回忆起曾经写过强制关机程序的时候需要使用一个提权系统函数,于是就想,既然VB6编辑环境可以运行,说明它的权限高一些,如果我使用函数提升权限后,就有可能可以不出错。
Public Declare Function RtlAdjustPrivilege Lib "ntdll.dll" ( _
ByVal Privilege As String, _
ByVal bEnable As Long, _
ByVal bCurrentThread As Long, _
ByRef bEnabled As Long) As Long
Public Const SE_DEBUG_PRIVILEGE As Long = 20
在程序的Load中执行:
Call RtlAdjustPrivilege(SE_DEBUG_PRIVILEGE, 0, 0, i) 'i为随便的一个整形变量
然后一些需要一定权限的操作就都可以进行了。比如说枚举系统文件。
0 0
- 【技术】权限提升在程序设计中的重要性案例
- 技术在游戏研发中的重要性
- 颜色在网页设计中的重要性【附30个优秀案例】
- Android程序设计中的性能提升
- 调音师在演奏中的重要性
- 数学在计算机科学中的重要性
- RSS技术在行业中的应用三案例
- OpenDocument文件格式在政府机关中的重要性
- 规范在项目开发中的重要性
- 数学史在数学教育中的重要性
- DBA在系统设计、开发中的重要性
- 规范在项目开发中的重要性
- HTML编码规范在SEO中的重要性
- 测试在嵌入式软件中的重要性
- DNS在活动目录中的重要性
- 主机域名在网站建设中的重要性
- 全局思考在程序编写中的重要性
- 浅说数学在算法中的重要性
- 关于hibernate提交事务后假死的解决办法
- HUE 报错误:Filesystem root '/' should be owned by 'hdfs'
- volatile
- MRPT API 学习之——kinect图像获取,显示,2维图像某点深度信息
- linux中与时间相关的结构体
- 【技术】权限提升在程序设计中的重要性案例
- psacct or acct in linux
- Qt Creator 为什么编译一直出现When executing build step 'qmake'呢?
- Windows驱动学习笔记之一:WinDbg+WMware+OS_Win7 配置
- 网页按钮大本营
- gcc的几个妙用
- template tracking(基于模板的跟踪)
- Hbase的优化总结
- Oracle数据库表空间文件被删除[ora-01033|ORA-01110]监听失败