当我尝试运行下面的代码时,我得到了
“值不能为空 . 参数名称:类型”
运行时出错 .
如何处理此异常以及为什么我的 objectName
在此处为空?我希望 objectName
能够在我的计算机上保存本地用户帐户的值 .
namespace Users {class 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 ");
}
}
}
任何帮助都会有用 .
1 回答
objectName
不会是null
. 更可能的情况是Type.GetTypeFromProgID(objectName)
返回null,因为prog-id没有't exist, or the account doesn't可以访问 .检查
Type.GetTypeFromProgID(objectName)
返回的内容,并采取相应措施 . 确保它实际上是一个prog-id,并且您正确使用该API . 例如:编辑:注意
Activator.CreateInstance
等 not 与VBScript的GetObject
相同 . 要访问它,请参考Microsoft.VisualBasic.dll
,并使用: