Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
FSO
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток. До слёз обидная проблема т.к. решение где-то рядом, а я его не вижу :( ASP.NET+VisualStudio 2003. На попытку выполнить скрипт: ... var fso; fso=new ActiveXObject("Scripting.FileSystemObject"); ... Выдаётся ошибка выполнения сценария (Невозможно создание объекта сервером программирования объектов). Подсобите кто чем может, уж больно не хочется на выходные с такой невозможностью! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2006, 17:59 |
|
||
|
FSO
|
|||
|---|---|---|---|
|
#18+
Кто ж разрешит-то? Даже и не думай.-- Абыpвалг! - сказал Linux после pyсификации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2006, 19:01 |
|
||
|
FSO
|
|||
|---|---|---|---|
|
#18+
Издеваешься ещё, а как тогда вообще на сервере папку создать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2006, 19:13 |
|
||
|
FSO
|
|||
|---|---|---|---|
|
#18+
А кто сказал, что на сервере надо таким образом папки сосздавать? WSH - это система скриптов для работы в консоли компьютера. И сервер тут ни при чём.-- Абыpвалг! - сказал Linux после pyсификации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2006, 19:24 |
|
||
|
FSO
|
|||
|---|---|---|---|
|
#18+
У меня просто задачка такая, создать папку для пользователя, вот и всё тут. Решил так, если нет то как иначе? Может подскажешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2006, 19:28 |
|
||
|
FSO
|
|||
|---|---|---|---|
|
#18+
Вот люди что задумали - создать папку у клиента. А может ещё и фалй создать, и реестр изменить, и файл скачать а потом запустить? Всё, что у тебя есть - это окно интернет эксплорера ,а также немного в куках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2006, 19:36 |
|
||
|
FSO
|
|||
|---|---|---|---|
|
#18+
Да не, папку создать на сервере нужно :) Недопонимание вышло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2006, 19:42 |
|
||
|
FSO
|
|||
|---|---|---|---|
|
#18+
Ты вообще что пишешь-то? И на чём? И когда ты этот свой скрипт запускаешь? P.S. А папку создать просто - залогинься на этот сервер, запусти проводник, да создай -- Абыpвалг! - сказал Linux после pyсификации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2006, 19:47 |
|
||
|
FSO
|
|||
|---|---|---|---|
|
#18+
Извеняйте, плохо сформулировал :) ASP.NET 2.0. Пользователь на обычной WebForm выбирает файл. Я его кидаю на сервер и (по Submit) должен поместить в папку по текущей дате (которой пока на сервере нет). Пишу на С#. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2006, 19:56 |
|
||
|
FSO
|
|||
|---|---|---|---|
|
#18+
Вот и вопрос, как в CodeBehind создать папку на сервере :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2006, 19:57 |
|
||
|
FSO
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, amkar, Вы писали: A>Вот и вопрос, как в CodeBehind создать папку на сервере :) Да уж не через активикс наверное. System.IO.Directory.CreateDirectoryЛюбая весть изначально благая, просто ты к этому еще не привык ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2006, 20:06 |
|
||
|
FSO
|
|||
|---|---|---|---|
|
#18+
System.IO.Directory.CreateDirectory() Юзер, под которым крутится ASP.NET, должен иметь соотв права на создание папок/файлов. Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2006, 20:07 |
|
||
|
FSO
|
|||
|---|---|---|---|
|
#18+
Что и требовалось доказать! Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2006, 20:21 |
|
||
|
FSO
|
|||
|---|---|---|---|
|
#18+
Можно было бы ограничиться указанием на System.IO. В педагогических целях. -- Абыpвалг! - сказал Linux после pyсификации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2006, 20:53 |
|
||
|
FSO
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Dkm_S, Вы писали: D_S>Можно было бы ограничиться указанием на System.IO. В педагогических целях. Тогда был бы очередной повод покричать про гадов с рсдн, которые вовсю глумятся над новичками.Ihesu who hath wonders sore, grants us the blyss of heathen ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2006, 21:19 |
|
||
|
FSO
|
|||
|---|---|---|---|
|
#18+
Да ладно, чем тут глумиться? Там всё так просто, а человек что-то, да знает. Самостоятельно узнанное приживается надёжнее.-- Абыpвалг! - сказал Linux после pyсификации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2006, 21:28 |
|
||
|
FSO
|
|||
|---|---|---|---|
|
#18+
2amkar: Если я тебя правильно понял то : Добавляешь using System.Security.Principal; using System.Security.Permissions; using System.Runtime.InteropServices; [assembly: SecurityPermissionAttribute(SecurityAction.RequestMinimum, UnmanagedCode = true)] [assembly: PermissionSetAttribute(SecurityAction.RequestMinimum, Name = "FullTrust")] public class WindowsIdentityEx : IDisposable, IIdentity { #region Unmanaged Code [DllImport("advapi32.dll", SetLastError = true)] public static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken); [DllImport("kernel32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)] private unsafe static extern int FormatMessage(int dwFlags, ref IntPtr lpSource, int dwMessageId, int dwLanguageId, ref String lpBuffer, int nSize, IntPtr* Arguments); [DllImport("kernel32.dll", CharSet = CharSet.Auto)] public extern static 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); public unsafe static string GetErrorMessage(int errorCode) { int FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100; int FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200; int FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000; int messageSize = 255; String lpMsgBuf = ""; int dwFlags = FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS; IntPtr ptrlpSource = IntPtr.Zero; IntPtr prtArguments = IntPtr.Zero; int retVal = FormatMessage(dwFlags, ref ptrlpSource, errorCode, 0, ref lpMsgBuf, messageSize, &prtArguments); if (0 == retVal) { throw new Exception("Failed to format message for error code " + errorCode + ". "); } return lpMsgBuf; } #endregion private const int LOGON32_PROVIDER_DEFAULT = 0; private const int LOGON32_LOGON_INTERACTIVE = 2; private const int SecurityImpersonation = 2; private bool _disposed = false; private IntPtr _tokenHandle = new IntPtr(0); private IntPtr _dupeTokenHandle = new IntPtr(0); private string _userName = string.Empty; private string _domainName = string.Empty; private string _password = string.Empty; private WindowsIdentity _windowsIdentity = null; private void Init() { _tokenHandle = IntPtr.Zero; _dupeTokenHandle = IntPtr.Zero; } public WindowsIdentityEx (string userName, string domainName, string password) { this.Init(); bool returnValue = LogonUser(userName, domainName, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref _tokenHandle); if (false == returnValue) { int ret = Marshal.GetLastWin32Error(); int errorCode = 0x5; //ERROR_ACCESS_DENIED throw new System.ComponentModel.Win32Exception(errorCode,string.Format("\nError: [{0}] {1}\n", ret, GetErrorMessage(ret))); } bool retVal = DuplicateToken(_tokenHandle, SecurityImpersonation, ref _dupeTokenHandle); if (false == retVal) { CloseHandle(_tokenHandle); throw new Exception("Unable to duplicate token"); } _windowsIdentity = new WindowsIdentity(_dupeTokenHandle); } public WindowsIdentityEx (IntPtr userToken) { this.Init(); _windowsIdentity = new WindowsIdentity(userToken); } public WindowsIdentityEx (string sUserPrincipalName) { this.Init(); _windowsIdentity = new WindowsIdentity(sUserPrincipalName); } public WindowsIdentityEx (IntPtr userToken, string type) { this.Init(); _windowsIdentity = new WindowsIdentity(type); } public WindowsIdentityEx (string sUserPrincipalName, string type) { this.Init(); _windowsIdentity = new WindowsIdentity(sUserPrincipalName,type); } public WindowsIdentityEx (IntPtr userToken, string type, WindowsAccountType acctType) { this.Init(); _windowsIdentity = new WindowsIdentity(userToken, type, acctType); } public WindowsIdentityEx (IntPtr userToken, string type, WindowsAccountType acctType, bool isAuthenticated) { this.Init(); _windowsIdentity = new WindowsIdentity(userToken, type, acctType, isAuthenticated); } public void Dispose () { Dispose(true); GC.SuppressFinalize(this); } private void Dispose (bool disposing) { if (!this._disposed) { if (disposing && _windowsIdentity!=null) { #if (FW2) _windowsIdentity.Dispose(); #endif } if (_tokenHandle != IntPtr.Zero) { CloseHandle(_tokenHandle); _tokenHandle = IntPtr.Zero; } if (_dupeTokenHandle != IntPtr.Zero) { CloseHandle(_dupeTokenHandle); _dupeTokenHandle = IntPtr.Zero; } } _disposed = true; } ~WindowsIdentityEx () { Dispose(false); } public string AuthenticationType { get { return _windowsIdentity.AuthenticationType; } } public bool IsAuthenticated { get { return _windowsIdentity.IsAuthenticated; } } public string Name { get { return _windowsIdentity.Name; } } public virtual bool IsAnonymous { get { return _windowsIdentity.IsAnonymous; } } public virtual bool IsGuest { get { return _windowsIdentity.IsGuest; } } public virtual bool IsSystem { get { return _windowsIdentity.IsSystem; } } public virtual IntPtr Token { get { return _windowsIdentity.Token; } } public WindowsIdentity WindowsIdentity { get { return _windowsIdentity; } } public virtual WindowsImpersonationContext Impersonate() { return _windowsIdentity.Impersonate(); } public static WindowsImpersonationContext Impersonate(IntPtr userToken) { return WindowsIdentity.Impersonate(userToken); } public static WindowsIdentity GetAnonymous() { return WindowsIdentity.GetAnonymous(); } public static WindowsIdentity GetCurrent() { return WindowsIdentity.GetCurrent(); } #if (FW2) public TokenImpersonationLevel ImpersonationLevel { get { return _windowsIdentity.ImpersonationLevel; } } public SecurityIdentifier Owner { get { return _windowsIdentity.Owner; } } public SecurityIdentifier User { get { return _windowsIdentity.User; } } public static WindowsIdentity GetCurrent(bool ifImpersonating) { return WindowsIdentity.GetCurrent(ifImpersonating); } public static WindowsIdentity GetCurrent(TokenAccessLevels desiredAccess) { return WindowsIdentity.GetCurrent(desiredAccess); } #endif } public WindowsImpersonationContext ImpersonateUser() { CheckImpersonateUserSettings(); string Username = ConfigurationSettings.AppSettings["ImpersonateUser"]; string Domainname = ConfigurationSettings.AppSettings["ImpersonateUserDomain"]; string Password = ConfigurationSettings.AppSettings["ImpersonateUserPass"]; WindowsIdentityEx newId = new WindowsIdentityEx(Username.Trim(),Domainname.Trim(),Password.Trim()); if (newId==null) throw new Exception(string.Format("Identität des Benutzers {0} in der Domäne {1} ist nicht gültig",Username,Domainname)); WindowsIdentity windowsIdentity = newId.WindowsIdentity; if (windowsIdentity==null) throw new Exception(string.Format("Identität des Benutzers {0} in der Domäne {1} ist nicht gültig",Username,Domainname)); return windowsIdentity.Impersonate(); } После чего берешь свой файло в буфер, имперсонируешся под юзверем из домена и пишешь буфер на сервер. Я например так файло двигал из WebService на DFS, вот почиканый код код : private bool MoveFile(string from,string to) { System.IO.FileStream fsRead =null; bool ok = false; WindowsImpersonationContext impersonatedUser = null; try { fsRead = new System.IO.FileStream(from,System.IO.FileMode.Open,System.IO.FileAccess.Read); byte[] b = new byte[fsRead.Length]; while (fsRead.Read(b,0,b.Length) > 0); impersonatedUser = ImpersonateUser(); System.IO.FileStream fsWrite = null; try { fsWrite = new System.IO.FileStream(to,System.IO.FileMode.Create,System.IO.FileAccess.ReadWrite); fsWrite.Write(b,0,b.Length); fsWrite.Flush(); fsWrite.Close(); ok=true; } catch(Exception ex) { // removed } } catch(Exception ex) { // removed } finally { try { if (impersonatedUser!=null) impersonatedUser.Undo(); if (fsRead!=null) fsRead.Close(); if (ok &&System.IO.File.Exists(from)) { System.IO.File.Delete(from); } } catch(Exception ex) { // removed } } return ok; } -- Если тебе помогли, незабудь сказать спасибо -- -- Это всё мое личное мнение которое может не совпадать с Вашим или может быть ошибочным -- .NetCoder ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2006, 22:33 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=33855226&tid=1391682]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 375ms |

| 0 / 0 |
