3

在以非管理员用户运行时,我的 C# 应用程序在某些情况下会崩溃。

我在使用 Windows Server 2003 时遇到问题,我正在尝试查找有关它的更多信息。这可能是其他 Windows 操作系统的问题。

似乎如果我创建一个非管理员用户,然后使用“运行为...”命令在该用户下运行我的应用程序,则用户环境设置不正确,并且 TEMP 环境变量指向 C :\Windows\Temp 而不是用户在“文档和设置”配置文件中拥有自己的 Temp 文件夹。用户没有此文件夹的权限,因此应用程序崩溃,.Net JIT 编译器尝试写入/读取此文件夹。

如果我以该用户身份登录,情况仍然是错误的。我没有准备好你在登录新用户时通常会得到的环境,而且我的应用程序在启动期间仍然无法运行而不会崩溃。事实上,我已经意识到用户无法在 Windows 文件夹中运行 calc.exe 或其他程序。他们的环境似乎永远混乱了,我想唯一的出路就是删除他们的个人资料。

如果我创建一个非管理员用户,并在执行“运行为..”之前以他们的身份登录,他们的环境设置正常,我的应用程序可以正常工作。

我找不到有关此问题的任何信息或有关 Microsoft 是否承认它的说明。你有没有经历过,或者你知道我在哪里可以找到更多关于它的信息吗?

4

1 回答 1

3

如果您不是,请考虑使用带有用户配置文件的 runas。

C:\temp>runas RUNAS USAGE:

RUNAS [ [/noprofile | /profile] [/env] [/netonly] ]
        /用户:程序

RUNAS [ [/noprofile | /profile] [/env] [/netonly] ]
        /smartcard [/user:] 程序

/noprofile 指定不应加载用户的配置文件。这会导致应用程序加载更快,但可能会导致某些应用程序出现故障。
/profile 指定应加载用户的配置文件。这是默认设置。/env 使用当前环境而不是用户的环境。/netonly 如果指定的凭据仅用于远程访问,则使用。/savecred 使用用户先前保存的凭据。此选项在 Windows XP Home Edition 上不可用,将被忽略。如果要从智能卡提供凭据,则使用 /smartcard。/user 应
为 EXE 的 USER@DOMAIN 或 DOMAIN\USER 程序命令行形式。请参阅下面的示例

例子:

runas /noprofile /user:mymachine\administrator cmd runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc" runas /env /user:user@domain.microsoft.com "notepad \"my file.txt\""

注意:仅在出现提示时输入用户密码。注意: USER@DOMAIN 与 /netonly 不兼容。注意:/profile 与 /netonly 不兼容。

于 2008-10-17T14:16:29.467 回答