0

Windows 7 マシンで別のローカル ユーザーとして実行する必要があるメイン アプリケーションから生成した子プロセスがあります。そのユーザー アカウントにパスワードを設定したくないのですが、偽装を使用して新しいプロセスを作成すると、空白のパスワードや任意の種類の null 値が許可されないようです。これが可能かどうか知っている人はいますか?

以下は、空白の文字を渡す私の試みでした:

ProcessStartInfo info = new ProcessStartInfo(@"C:\PathToExecutable");
System.Security.SecureString psswd = new System.Security.SecureString();
psswd.AppendChar('\0');
psswd.MakeReadOnly();

info.UseShellExecute = false;
info.UserName = "NewProcessName";
info.Password = psswd;
info.Domain = "LocalMachine";

Process newProc = new Process();
newProc.StartInfo = info;

newProc.Start();

編集:受け取ったエラーメッセージ

Logon failure: user account restriction. Possible reasons are blank passwords not allowed, logon hour restrictions, or a policy restriction has been enforced

4

4 に答える 4

1

偽装するために何を使用していますか? LogonUser()空のパスワードを許可する必要があります。

psswd.AppendChar('\0')空白のパスワードを指定するには、電話をかけるのが正しい方法ではないと思います。コードから を削除してSecureString、少なくとも偽装が機能するかどうかを確認してください。次に、SecureString を再度追加して、問題があるかどうかを確認します。

* 編集 *

これを試して:

unsafe {
    char* ary = stackalloc char[0];
    SecureString str = new SecureString(ary, 0);
}

新しい SecureString に設定します...コンテキストinfo.Password内でそれを行う必要があるかどうかはわかりません。unsafe

于 2010-08-30T21:34:51.633 に答える
1

これを行うには、セキュリティ ポリシーを無効にする必要があります

  1. [コントロール パネル] → [管理ツール] → [ローカル セキュリティ ポリシー] に移動します。
  2. [セキュリティ設定] → [ローカル ポリシー] → [セキュリティ オプション] を参照します。[アカウント: ローカル アカウントでの空のパスワードの使用をコンソール ログオンのみに制限する] を探します。
  3. 無効を選択して適用

ここに他の解決策があります: https://sites.google.com/site/sqlestream/windows-issue/10-cannot-access-the-shared-folder-due-to-blank-password-not-allowed

ProcessStartInfo procStartInfo = new ProcessStartInfo("File Name", "Argument(Optional)")
{
      UserName = "UserName",
      RedirectStandardError = true,
      RedirectStandardOutput = true,
      UseShellExecute = false,
      CreateNoWindow = true
};
using (Process proc = new Process())
{
       proc.StartInfo = procStartInfo;
       proc.Start();
}

ユーザーパスワードを宣言せずにプロセスを実行できるようになります

于 2020-08-16T00:53:53.937 に答える
0

この質問が指摘しているように、でtrueに設定LoadUserProfileますStartInfo。それを試してみてください、それは役立つかもしれません。

于 2010-08-30T21:35:58.717 に答える
0

これは明らかに既知の問題LogonUser()で、空白のパスワードで失敗します。私のユース ケースでは、必要なユーザー アカウントに汎用パスワードを設定しました。

于 2012-10-16T18:02:44.480 に答える