473,396 Members | 1,724 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

COM Objects

I'm retrieving all the properties from a DirectoryEntry object and some of the properties are __ComObjects. How can I handle these in my code? Basically, I want to display the values in HRF (human readable format). I'm pretty sure that the values I'm dealing with are date/times but I'm not sure, so I will have to check the type as well.
Nov 22 '05 #1
4 4455
Ok, I've disected the objects and they appear to be of the generic Object class. When I use GetMethods/Members/Properties I get the following list for both Members & Methods while there does not appear to be any properties. My questions still stand though, how can I manipulate these objects and get some meaningful data from them? I've listed the Active Directory properties where these objects appear as well

Method/Member list
CreateObjRe
InitializeLifetimeServic
GetLifetimeServic
GetHashCod
Equal
ToStrin
GetTyp

AD Property List - (from objectClass=user)
uSNCreate
uSNChange
badPasswordTim
lastLogof
lastLogo
pwdLastSe
accountExpire
nTSecurityDescriptor
Nov 22 '05 #2
Ok, I've disected the objects and they appear to be of the generic Object class. When I use GetMethods/Members/Properties I get the following list for both Members & Methods while there does not appear to be any properties. My questions still stand though, how can I manipulate these objects and get some meaningful data from them? I've listed the Active Directory properties where these objects appear as well

Method/Member list
CreateObjRe
InitializeLifetimeServic
GetLifetimeServic
GetHashCod
Equal
ToStrin
GetTyp

AD Property List - (from objectClass=user)
uSNCreate
uSNChange
badPasswordTim
lastLogof
lastLogo
pwdLastSe
accountExpire
nTSecurityDescriptor
Nov 22 '05 #3
Some properties are returned as a Generic COM wrapper object __ComObj,
because:
1) They are not declared in the System.DirectoryServices namespace classes,
2) or there is no Typelib declaration for the corresponding to the COM
interface

You have three options to solve this issue using C#.
a) Use reflection to read the properties of the underlying COM interface,
b) Import the activeds.tlb in your project (add a COM reference).

Following illustrates how to retrieve the usnCreated attribute using option
a):

if(Marshal.IsComObject(pcoll["usnCreated"].Value)) // is __ComObj?
{
object obj = pcoll["usnCreated"].Value; // __ComObj derives from
Object
// Get LowPart property from ILargeInteger (INTEGER8 adstype)
object low = obj.GetType().InvokeMember("LowPart",
BindingFlags.GetProperty,null, obj, null);
// Get HighPart property from ILargeInteger (INTEGER8 adstype)
object high = obj.GetType().InvokeMember("HighPart",
BindingFlags.GetProperty,null, obj, null);
// Convert to long
long usn = (Convert.ToInt64(high) << 32) + Convert.ToInt64(low);
Console.WriteLine(usn);
}

And this shows how get the accountExpires property (or any other
LargeInteger property representing a date) using b)
....
using activedsImport; // Imported activds.tlb Interop assembly's
namespace
.....

LargeInteger li = pcoll["accountExpires"].Value as LargeInteger;
long date = (((long)(li.HighPart) << 32) + (long) li.LowPart);
if((li.HighPart == -1) && (li.LowPart == -1)) {
Console.WriteLine("Account never expires");
}
else {
// Valid date, convert to DateTime format
// Note that this date is one day later than the date displayd in the
Directory Users and Computers MMC
string dt = DateTime.FromFileTime(date).ToString();
Console.WriteLine("DATE = {0:D}" ,dt);
}

Willy.
"Gary K" <__*****@trcare.org.au__> wrote in message
news:85**********************************@microsof t.com...
Ok, I've disected the objects and they appear to be of the generic Object
class. When I use GetMethods/Members/Properties I get the following list
for both Members & Methods while there does not appear to be any
properties. My questions still stand though, how can I manipulate these
objects and get some meaningful data from them? I've listed the Active
Directory properties where these objects appear as well.

Method/Member list:
CreateObjRef
InitializeLifetimeService
GetLifetimeService
GetHashCode
Equals
ToString
GetType

AD Property List - (from objectClass=user):
uSNCreated
uSNChanged
badPasswordTime
lastLogoff
lastLogon
pwdLastSet
accountExpires
nTSecurityDescriptor

Nov 22 '05 #4
Some properties are returned as a Generic COM wrapper object __ComObj,
because:
1) They are not declared in the System.DirectoryServices namespace classes,
2) or there is no Typelib declaration for the corresponding to the COM
interface

You have three options to solve this issue using C#.
a) Use reflection to read the properties of the underlying COM interface,
b) Import the activeds.tlb in your project (add a COM reference).

Following illustrates how to retrieve the usnCreated attribute using option
a):

if(Marshal.IsComObject(pcoll["usnCreated"].Value)) // is __ComObj?
{
object obj = pcoll["usnCreated"].Value; // __ComObj derives from
Object
// Get LowPart property from ILargeInteger (INTEGER8 adstype)
object low = obj.GetType().InvokeMember("LowPart",
BindingFlags.GetProperty,null, obj, null);
// Get HighPart property from ILargeInteger (INTEGER8 adstype)
object high = obj.GetType().InvokeMember("HighPart",
BindingFlags.GetProperty,null, obj, null);
// Convert to long
long usn = (Convert.ToInt64(high) << 32) + Convert.ToInt64(low);
Console.WriteLine(usn);
}

And this shows how get the accountExpires property (or any other
LargeInteger property representing a date) using b)
....
using activedsImport; // Imported activds.tlb Interop assembly's
namespace
.....

LargeInteger li = pcoll["accountExpires"].Value as LargeInteger;
long date = (((long)(li.HighPart) << 32) + (long) li.LowPart);
if((li.HighPart == -1) && (li.LowPart == -1)) {
Console.WriteLine("Account never expires");
}
else {
// Valid date, convert to DateTime format
// Note that this date is one day later than the date displayd in the
Directory Users and Computers MMC
string dt = DateTime.FromFileTime(date).ToString();
Console.WriteLine("DATE = {0:D}" ,dt);
}

Willy.
"Gary K" <__*****@trcare.org.au__> wrote in message
news:85**********************************@microsof t.com...
Ok, I've disected the objects and they appear to be of the generic Object
class. When I use GetMethods/Members/Properties I get the following list
for both Members & Methods while there does not appear to be any
properties. My questions still stand though, how can I manipulate these
objects and get some meaningful data from them? I've listed the Active
Directory properties where these objects appear as well.

Method/Member list:
CreateObjRef
InitializeLifetimeService
GetLifetimeService
GetHashCode
Equals
ToString
GetType

AD Property List - (from objectClass=user):
uSNCreated
uSNChanged
badPasswordTime
lastLogoff
lastLogon
pwdLastSet
accountExpires
nTSecurityDescriptor

Nov 22 '05 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
by: dasod | last post by:
I would like to know if my method to remove list objects is correct in this small test program. It seems to me that there might be a simplier way, but I'm afraid I don't know enough about list...
9
by: Aguilar, James | last post by:
Hey guys. A new question: I want to use an STL libarary to hold a bunch of objects I create. Actually, it will hold references to the objects, but that's beside the point, for the most part. ...
6
by: Alfonso Morra | last post by:
I have written the following code, to test the concept of storing objects in a vector. I encounter two run time errors: 1). myClass gets destructed when pushed onto the vector 2). Prog throws a...
3
by: ytrewq | last post by:
Should dynamic ("expando") properties be restricted to native and user-defined objects? Or should host objects - such as references to the browser or a plug-in or to the document and its elements -...
8
by: Lüpher Cypher | last post by:
Hi, Suppose we have a hierarchical class structure that looks something like this: Object | +-- Main | +-- Object1
161
by: KraftDiner | last post by:
I was under the assumption that everything in python was a refrence... so if I code this: lst = for i in lst: if i==2: i = 4 print lst I though the contents of lst would be modified.....
7
by: Jo | last post by:
Hi, How can i differentiate between static and dynamic allocated objects? For example: void SomeFunction1() { CObject *objectp = new CObject; CObject object;
21
by: George Exarchakos | last post by:
Hi everyone, I'd like your help... Can we have a std::list<BASEwhere BASE be the base class of a class hierarchy? I want to add to this list objects that are inherited from BASE class but not...
27
by: SasQ | last post by:
Hello. I wonder if literal constants are objects, or they're only "naked" values not contained in any object? I have read that literal constants may not to be allocated by the compiler. If the...
14
by: Jess | last post by:
Hello, I learned that there are five kinds of static objects, namely 1. global objects 2. object defined in namespace scope 3. object declared static instead classes 4. objects declared...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.