C# - Wert darf nicht null sein. Parameter name: Typ
wenn ich versuche, führen Sie den folgenden code, ich bin immer
"Wert darf nicht null sein. Parameter name: Typ"
Fehler zur Laufzeit.
Zu behandeln, wie dies die Ausnahme ist und warum mein objectName
null ist hier? Ich erwarte objectName
zu halten, wird der Wert der lokalen Benutzerkonto auf meinem computer.
namespace Benutzer
{
Klasse EnableDisableUsers
{
public static void Main(string[] args)
{
Console.WriteLine("Enter user account to be enabled or disabled");
var user = Console.ReadLine();
Console.WriteLine("Enter E to enable and D to disable the user account");
string enableStr = Console.ReadLine();
bool enable;
var computer = ".";
if (enableStr.Equals("E") || enableStr.Equals("e"))
{
enable = true;
var objectName = "WinNT://" + computer + "/" + user + ",user";
dynamic objUser = Activator.CreateInstance(Type.GetTypeFromProgID(objectName));
objUser.AccountDisabled = false;
objUser.SetInfo();
Console.WriteLine(user + " Enabled = " + result.ToString());
Console.ReadLine();
}
else if (enableStr.Equals("D") || enableStr.Equals("d"))
{
enable = false;
var objectName = "WinNT://" + computer + "/" + user + ",user";
dynamic objUser = Activator.CreateInstance(Type.GetTypeFromProgID(objectName));
objUser.AccountDisabled = true;
objUser.SetInfo();
Console.WriteLine(user + " Enabled = " + result.ToString());
Console.ReadLine();
}
else
{
Console.WriteLine("Operation for " + user + " failed ");
}
}
}
}
Jede Hilfe nützlich sein wird.
Müssen Sie die post mehr code als diese. Wo sind die Benutzer-und computer definiert?
Ist Art.GetTypeFromProgID(objectName) null?
Vielleicht möchten Sie erwägen System.DirectoryServices für diese statt. Siehe msdn.microsoft.com/en-us/library/.... Die Art und Weise Sie tun es ist analagous, wie Sie es in VBScript. Sie können verwenden Sie die DirectoryEntry-UserFlags Eigenschaft set/unset Aktiviert.
Der gesamte code ist hier.
Ist Art.GetTypeFromProgID(objectName) null?
Vielleicht möchten Sie erwägen System.DirectoryServices für diese statt. Siehe msdn.microsoft.com/en-us/library/.... Die Art und Weise Sie tun es ist analagous, wie Sie es in VBScript. Sie können verwenden Sie die DirectoryEntry-UserFlags Eigenschaft set/unset Aktiviert.
Der gesamte code ist hier.
InformationsquelleAutor user1528803 | 2012-07-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
objectName
ist nichtnull
. Das eher Szenario ist, dassType.GetTypeFromProgID(objectName)
ist Rückkehr null, da dass prog-id existiert nicht, oder das Konto nicht zugreifen.Überprüfen, was
Type.GetTypeFromProgID(objectName)
gibt, und entsprechend handeln. Stellen Sie sicher, es ist eigentlich ein prog-id, und, dass Sie, dass die API korrekt. Zum Beispiel:Edit: Beachten Sie, dass
Activator.CreateInstance
etc ist nicht das gleiche wie VBScript istGetObject
. Zugriff, ReferenzMicrosoft.VisualBasic.dll
, und verwenden Sie:um das zu beantworten, bräuchte ich, um zu sehen, wo es sagt, das ist soll zu arbeiten...
siehe auch meine Antwort aktualisiert
InformationsquelleAutor Marc Gravell