7

次の方法で、特定のユーザー名/パスワードを使用してプロセスを実行できることを知っています。

var processInfo = new ProcessStartInfo
{
    WorkingDirectory = workingDirectory,
    FileName = "a name",
    UserName = loggedUserName, 
    Password = "password",
    Domain = userNameDomain,
    UseShellExecute = false,
};
Process.Start(processInfo);

私が直面している問題は、実際のパスワードをコードの一部として書きたくないということであり、Password 属性を空のままにしておくとプロセスが開始されません...公開せずにプロセスを安全に開始するにはどうすればよいですかコード内のハードコードされた文字列としてのパスワード?

4

2 に答える 2

2

このようなパスワードを管理するために、Windows パスワード ストアを使用しています。Windows API をラップするhttp://credentialmanagement.codeplex.com/ライブラリを確認してください。Setup-Routine または Admin のいずれかがストアにパスワードを追加できます。これは実行時にアプリケーションから取得できます。唯一の欠点は、ストアがユーザー固有であることです。複数のユーザーで使用できるパスワードを作成することはできません。

それはそれと同じくらい簡単です:

        _credentials = new CredentialSet("myApp:*");
        if (_credentials.Count == 0)
        {
            //TODO: ask user for password, supply it here, or use windows UI to set password (rundll32.exe keymgr.dll, KRShowKeyMgr)
            var c = new Credential()
            {
                Target = "myApp:Production",
                Username = "SomeUser",
                Description = "Credentials for doing something...",
                PersistanceType = PersistanceType.LocalComputer,
                Type = CredentialType.DomainPassword
            };
            c.Save();
            _credentials.Add(c);
        }
于 2016-02-23T09:09:16.637 に答える