Как передать учетные данные на компьютер, чтобы на нем можно было использовать Microsoft.Win32.RegistryKey.OpenRemoteBaseKey ()?

Похоже, вы просто клонировали пустой репозиторий.

Вы можете попробовать сами. Создайте пустой репозиторий (git init a), клонируйте этот пустой репозиторий (git clone a b) и попытайтесь извлечь из него (cd b; git pull).

Это должно дать точно такой же результат, как и в вашем случае.

Вы действительно запустили какой-либо код в это приложение? Это действительно приложение, которое вы имели в виду?

Вы также можете попытаться создать другое новое приложение, нажать фиксацию и проверить, можете ли вы клонировать его в новый каталог. Возможно, это даст вам представление о том, что может быть неправильным.

13
задан JCCyC 29 March 2010 в 21:46
поделиться

1 ответ

Для доступа к файлам на компьютере я успешно использовал следующий код:

    #region imports 
        [DllImport("advapi32.dll", SetLastError = true)] 
        private static extern bool LogonUser(string 
        lpszUsername, string lpszDomain, string lpszPassword, 
        int dwLogonType, int dwLogonProvider, ref 
IntPtr phToken); 


        [DllImport("kernel32.dll", CharSet = CharSet.Auto, 
        SetLastError = true)] 
        private static extern bool CloseHandle(IntPtr handle 
        ); 

        [DllImport("advapi32.dll", CharSet = CharSet.Auto, 
        SetLastError = true)] 
        public extern static bool DuplicateToken(IntPtr 
        existingTokenHandle, 
        int SECURITY_IMPERSONATION_LEVEL, ref IntPtr 
        duplicateTokenHandle); 
        #endregion 
        #region logon consts 
        // logon types 
        const int LOGON32_LOGON_INTERACTIVE = 2; 
        const int LOGON32_LOGON_NETWORK = 3; 
        const int LOGON32_LOGON_NEW_CREDENTIALS = 9; 

        // logon providers 
        const int LOGON32_PROVIDER_DEFAULT = 0; 
        const int LOGON32_PROVIDER_WINNT50 = 3; 
        const int LOGON32_PROVIDER_WINNT40 = 2; 
        const int LOGON32_PROVIDER_WINNT35 = 1; 
        #endregion 

А затем для частичной подписи просто используйте:

        IntPtr token = IntPtr.Zero; 

        bool isSuccess = LogonUser("username", "domain", "password", 
        LOGON32_LOGON_NEW_CREDENTIALS, 
        LOGON32_PROVIDER_DEFAULT, ref token); 
        using (WindowsImpersonationContext person = new WindowsIdentity(token).Impersonate()) 
        { 
        //do your thing 
         person.Undo(); 
        } 

Как вы могли заметить, «Отменить ()» заставит вас больше не вошли в систему как этот пользователь. Так что не используйте его, пока не закончите. Но не забывайте им пользоваться!

33
ответ дан 1 December 2019 в 19:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: