刚上线一个新版本,其中有台电脑打开软件就报【xx的类型初始值设定项引发异常】(还好不是一大波电脑,新东西上线就怕哀鸿遍野),如图:
显然是该类型的静态构造函数中抛异常了(红线处就是类名),遂打开该类,其构造函数中唯有一句看起来可能引发异常,即:
Process.EnterDebugMode(); //用来开启本进程调试特权(SeDebugPrivilege)
随即把这句放到一个测试程序中,再把测试程序拷到问题电脑上跑,果然是它,抛异常:Win32Exception:并非所有引用的特权或组都分配给呼叫方。如图:
可是为什么开发机和其它电脑都没抛呢,我大致能猜到跟该机权限不够有关,首先检查当前用户是否管理组,是管理组,但不是内置管理员administrator,立马联想到UAC(用户账户控制,这货我曾经吐槽过,它会让自建管理员与内置管理员有不同表现,所以印象深刻),检查一下果然就是它,关闭UAC重启之后,问题解决。
另外我也给那句代码加了try-catch,直接吃掉,因为在这个程序中,调试特权不是必须,拿不到也没关系。
-文毕-