我在做一个控制NTFS文件夹权限的 vc
project
东查西找,
AddAccessAllowedAce
SetSecurityDescriptorDacl
SetFileSecurity
用这些API可以搞定.
但是发现生成的权限只是对文件夹本身生效.而不是我所期望的文件夹与子文件夹及子文件
后来发现 AddAccessAllowedAceEx 这个函数支持这个参数.
改好代码后,一编译,说这个函数未声明.
奇怪啊,我又 #include
<winbase.h> 还是不管用.
最后一研究.该函数必须要 WINNT 5.0 以上才支持的,也就是说
要在 stdafx.h
的最开头,添加如下一句
#define _WIN32_WINNT 0x0500
表示你所编译的是系统内核是NT
5.0以上的,就OK了.(也就是win2000以上的系统,非win98以下)
类似这样的函数很多.其实,要仔细一点就会发现,在msdn中有这么一行隔膜计量泵说明.
QuickInfo
Windows NT: Requires version 5.0 or later.
有时,登录的用户名是带有域名的,比如说
mydomain\user1
但是如果调用
GetUserName,则不论你是登录的本机,还是登录的域,获取的都是user1,而不能获得域名.
GetUserNameEx这个函数,就可以获得全名称.
不过,如果是在vc6情况下,就没办法直接使用这个函数了,我尝试将隔膜计量泵对应的.h和.lib复制过来,却总是不行.最后想到的一招还是使用LoadLibrary/GetProcAddres
typedef
enum
{
// Examples for the following formats assume a
fictitous company
// which hooks into the global X.500 and
DNS name spaces as follows.
//
//
Enterprise root domain in DNS is
//
// widget.com
//
// Enterprise root domain in X.500 (RFC 1779 format)
is
//
// O=Widget, C=US
//
// There exists the child domain
//
//
engineering.widget.com
//
//
equivalent to
//
// OU=Engineering, O=Widget,
C=US
//
// There exists a container
within the Engineering domain
//
// OU=Software, OU=Engineering, O=Widget,
C=US
//
// There exists the
user
//
// CN=John Doe, OU=Software, OU=Engineering,
O=Widget, C=US
//
// And this user‘s
downlevel (pre-ADS) user name is
//
// Engineering\JohnDoe
// unknown name type
NameUnknown =
0,
// CN=John Doe, OU=Software, OU=Engineering,
O=Widget, C=US
NameFullyQualifiedDN =
1,
// Engineering\JohnDoe
NameSamCompatible = 2,
// Probably "John Doe" but
could be something else. I.e. The
// display name is
not necessarily the defining RDN.
NameDisplay =
3,
// String-ized GUID as returned by
IIDFromString().
// eg:
{4fa050f0-f561-11cf-bdd9-00aa003a77b6}
NameUniqueId =
6,
// engineering.widget.com/software/John
Doe
NameCanonical = 7,
//
[email protected]
NameUserPrincipal =
8,
// Same as NameCanonical except that rightmost ‘/‘
is
// replaced with ‘\n‘ - even in domain-only
case.
// eg: engineering.widget.com/software\nJohn
Doe
NameCanonicalEx = 9,http://www.tju.edu.cn/
// www/srv.engineering.com/engineering.com
NameServicePrincipal = 10,
// DNS domain name + SAM
username
// eg:
engineering.widget.com\JohnDoe
NameDnsDomain = 12
}
EXTENDED_NAME_FORMAT, * PEXTENDED_NAME_FORMAT;
typedef
BOOLEAN (SEC_ENTRY *MYGETUSERNAMEEX)
(EXTENDED_NAME_FORMAT,LPSTR,PULONG);
char
buffer[200];
ULONG len=200;
HINSTANCE
LibHandle;
LibHandle = LoadLibrary("secur32.dll");
if(
LibHandle )
{
MYGETUSERNAMEEX func;
func =
(MYGETUSERNAMEEX)GetProcAddress(LibHandle,"GetUserNameExA");
if( func
)
{
(func)(NameSamCompatible,buffer,&len);
AfxMessageBox(buffer);
为啥报错误函数未定义
时间: 2024-10-10 07:06:44
为啥报错误函数未定义的相关文章
PHPCMS里的日历插件及在IE下报Calendar未定义
日历代码: <link rel="stylesheet" type="text/css" href="calendar/jscal2.css"/> <link rel="stylesheet" type="text/css" href="calendar/border-radius.css"/> <link rel="stylesheet"
IE浏览器报Promise未定义
用vue-cli做的项目,用了promise,结果IE下报promise未定义,甚至在比较老的andriod手机浏览器上会显示空白页面,解决方案如下: 首先安装:babel-polyfill npm install babel-polyfill --save 然后引入:babel-polyfill 在build目录下,webpack.base.conf.js里 entry: { app: ["babel-polyfill", "./src/main.js"] },
remainingCharacters谷歌浏览器报错未定义,这到底是不是个属性呢,还是作者没有写清楚?
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title></title> 6 <script type="text/javascript"> 7 window.onload = function(){ 8 var limitLength = document.getElementById('limit
oracle11g 数据库导出报“ EXP-00003: 未找到段 (0,0) 的存储定义”错误的解决方案
导出oracle11.2.0.2的服务器的数据时,报"EXP-00003: 未找到段 (0,0) 的存储定义"错误.初步分析是由于数据表是空表导致该问题. Oracle 11G在用EXPORT导出时,空表不能导出 11GR2中有个新特性,当表无数据时,不分配segment,以节省空间 解决方法:一. insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segment.导出时则可导出空表.二. 设置deferred_segment_cr
angularjs 遇见$scope,xxx=function()报错为该函数未定义
本包子今天遇见一个问题,就是明明写了$scope,xx=function()但是报错了,报错显示是该函数未定义,我就很着急的先将函数写成一个全局函数,就没问题,等下午有空的时候寻思了一下,为什么全局就行呢,后来尝试将之前写的$scope.xxx=function()放在最上面,发现就没有报错了,才明白过来,这个angularjs中的函数原来是有执行的顺序的,写调用方法的时候,最好写在上面,so de si nei! 自己基本功还是很不扎实,得多多锻炼啊
为什么报错说req未定义,createServer只接受匿名函数吗?
var http = require('http');var server = new http.createServer(handlerRequest(req,res));server.listen(8888);function handlerRequest(req,res){ res.end('hellow');}为什么报错说req未定义,createServer只接受匿名函数吗?
在datagrid中,IE浏览器报错:SCRIPT5007: 无法获取属性&ldquo;rowspan&rdquo;的值: 对象为 null 或未定义
项目总采用datagird时,产生界面如下图原本标题上有功能按钮,此时消失 错误:SCRIPT5007: 无法获取属性"rowspan"的值: 对象为 null 或未定义, 造成这种错误的原因大致为:(1) 可能是在datagrid里面下的frozenColumns:[[ {......}]]或者是columns:[[{...},{...}]] {...}之间多一个逗号(,) 查找原因为:columns定义时中 某个位置多写了 逗号, 仔细检查一下. 实际效果为: 误区:并非是
jQuery中的关于$的未定义
1.在初学jQuery时,刚开始做好的一段简单的jQuery代码运行完成后,为了简便合理,把它放在了重新建的一个文件夹下,在运行时总是出现$未定义. 这是一个关键点:在jQuery中,一定要确保引用文件的位置在你所jQuery代码文件的位置之后,当我换回之后.就不再报错了. 问题感悟:1.在遇到问题时,要想一想自己是哪里记错了,才能有所感悟.多查多看多想...
0x800a1391-Microsoft Jscript ";JSON未定义";
本人在进行调试代码是遇到以下问题: 在运行到var result = JSON.parse(data);这句时,报错:JSON未定义.如下图: 可是前几天运行还好好的,怎么突然就报错了呢? 经过查找发现,原来是ie浏览器的浏览模式出的鬼. 报错时的ie浏览模式是这样的:. 解决方法:把”ie9兼容性视图模式“改为“ie9模式”就可以了.